Skip to content

Analytics · Beta

Botify
API integration

Ship Analytics features without building the integration. Full Botify API access via Proxy and 40+ MCP-ready tools for AI agents — extend models and mappings to fit your product.

Built for specific customer use cases. Issues are resolved quickly.

Talk to us
Botify

Use Cases

Why integrate with Botify

Common scenarios for SaaS companies building Botify integrations for their customers.

01

Embed enterprise SEO analytics into marketing dashboards

BI and marketing analytics platforms can pull Botify crawl stats, orphan URLs, and BQL aggregations directly into their dashboards, letting customers correlate technical SEO health with revenue and pipeline data without leaving the product.

02

Trigger crawls automatically from CMS or deployment events

Headless CMS platforms and CI/CD tools can programmatically launch Botify analyses whenever large content batches ship, so customers get an immediate technical audit of newly published URLs.

03

Power SEO incident alerting for site reliability tools

Monitoring and alerting SaaS can poll Botify crawl statistics to detect spikes in 4xx/5xx errors, crawl drops, or sitemap regressions, and route alerts to on-call engineers before Google de-indexes affected pages.

04

Guardrail CRO and A/B testing platforms against SEO regressions

Experimentation platforms can compare Botify PageRank and internal link percentile data before and after a test deploys, warning customers if a navigation or template change is bleeding link equity from high-value pages.

05

Automate technical SEO ticketing for engineering teams

Ticketing and project management tools can query Botify sitemap reports and crawl statistics to auto-generate Jira or Linear issues for broken URLs, orphan pages, and indexability problems on high-value templates.

What You Can Build

Ship these features with Truto + Botify

Concrete product features your team can ship faster by leveraging Truto’s Botify integration instead of building from scratch.

01

One-click crawl launcher

Let users kick off a new Botify analysis from your UI using create_a_botify_create_launch, with pause and resume controls wired to botify_analyses_pause and botify_analyses_resume.

02

Orphan URL recovery workflow

Surface URLs from list_all_botify_ganalytics_orphan_urls and list_all_botify_visits_orphan_urls that receive real traffic but aren't reachable via internal links, so users can prioritize fixes.

03

Custom BQL query builder

Use create_a_botify_query and get_single_botify_urls_agg_by_id to let users define aggregated SEO metrics (by depth, segment, or template) and render them as widgets inside your app.

04

Async URL export pipeline into a data warehouse

Schedule large URL-level exports via create_a_botify_urls_export and poll get_single_botify_urls_export_by_id to sync Botify datasets into Snowflake, BigQuery, or Redshift.

05

Crawl health monitoring widget

Combine list_all_botify_crawl_statistics, list_all_botify_crawl_statistics_times, and list_all_botify_crawl_statistics_urls to show real-time crawl error rates, speed, and coverage trends.

06

PageRank and sitemap integrity alerts

Poll list_all_botify_pagerank_losts and list_all_botify_sitemaps_reports to detect pages bleeding link equity or sitemap entries returning errors, and push alerts into Slack or ticketing tools.

SuperAI

Botify AI agent tools

Comprehensive AI agent toolset with fine-grained control. Integrates with MCP clients like Cursor and Claude, or frameworks like LangChain.

list_all_botify_analyses

List all Botify analyses for a project. Returns each analysis with slug, name, status, url, date_launched, date_finished, and additional crawl metadata. Required: username, project_slug.

botify_analyses_pause

Pause a running Botify analysis for a project. Returns the analysis object with slug, name, status, url, date_launched, and additional crawl metadata. Required: username, project_slug, analysis_slug.

botify_analyses_resume

Resume a paused Botify analysis for a project. Returns the analysis object with slug, name, status, url, date_launched, and additional crawl metadata. Required: username, project_slug, analysis_slug.

get_single_botify_analysis_by_id

Get a single Botify analysis by id. Returns: user, owner, slug, name, friendly_name, url, status, computing_revision, features, urls_done, urls_in_queue, config, date_launched, date_finished, date_last_modified, date_created, date_crawl_done, failures, red_button_domain, import_keywords_data, import_keywords_data_by_country, crawl_launch_type, to_be_deleted_at, comparable, excluded_from_trends,…. Required: id, username, project_slug.

create_a_botify_create_launch

Create and launch an analysis for a Botify project. Returns the created analysis launch response object. Required: username, project_slug.

list_all_botify_lights

List all analyses for a Botify project in light format. Returns: next, previous, count, results, page, size. Required: username, project_slug.

list_all_botify_crawl_statistics

Get global crawl statistics for a Botify analysis. Returns a crawl statistics object whose attributes contain analysis-level crawl metrics defined in the upstream Botify OpenAPI schema. Required: username, project_slug, analysis_slug.

list_all_botify_crawl_statistics_times

List Botify crawl statistics grouped by time frequency (1mn, 5mn, or 60mn) for a specific analysis. Returns the data object containing time-grouped crawl metric arrays as defined by the upstream CrawlStatisticsTime schema. Required: username, project_slug, analysis_slug, frequency.

list_all_botify_crawl_statistics_urls

List the 1000 latest URLs crawled during a Botify analysis, either all crawled URLs or only those with HTTP errors depending on the list_type. Returns an array of URL records including the url. Limited to 1000 results. Required: username, project_slug, analysis_slug, list_type.

list_all_botify_ganalytics_orphan_urls

List Google Analytics orphan URLs for a Botify analysis — URLs that received visits from the selected traffic source but were not crawled by Botify. Returns: next, previous, count, results, page, size. Legacy endpoint; medium must be organic or social with a matching source value. Required: username, project_slug, analysis_slug, medium, source.

list_all_botify_links_percentiles

Get inlinks percentiles. Returns: domain, percentiles. Required: username, project_slug, analysis_slug.

list_all_botify_pagerank_losts

List lost pagerank entries for a Botify analysis. Returns: non_crawled, external, robots_txt. Required: username, project_slug, analysis_slug.

list_all_botify_scoring_summaries

Get the scoring summary for a specific Botify analysis. Returns the scoring summary object for the analysis. Required: username, project_slug, analysis_slug.

list_all_botify_search_console_stats

List Google Search Console clicks and impressions per day for a Botify analysis. Returns: stats. Required: username, project_slug, analysis_slug.

list_all_botify_sitemaps_reports

Get the sitemaps report for a Botify analysis, providing global information about sitemaps found during the crawl such as sitemaps indexes and invalid sitemaps URLs. Returns the SitemapsReport object. Required: username, project_slug, analysis_slug.

list_all_botify_samples_out_of_configs

List sample URLs found in Botify sitemaps but outside the crawl perimeter defined for the project (e.g., disallowed domains, subdomains, or protocols). Returns: next, previous, count, results, page, size. Required: username, project_slug, analysis_slug.

list_all_botify_samples_sitemap_onlies

List URLs found in your sitemaps, within the project allowed scope (allowed domains/subdomains/protocols), but not found by the Botify crawler, for a given Botify analysis. Returns: next, previous, count, results, page, size. Required: username, project_slug, analysis_slug.

list_all_botify_top_domains_domains

List top domains found in a Botify analysis. Returns: next, previous, count, results, page, size. Required: username, project_slug, analysis_slug.

list_all_botify_top_domains_subdomains

List top subdomains for a Botify analysis. Returns a paginated collection with next, previous, count, results, page, and size. Required: username, project_slug, analysis_slug.

list_all_botify_visits_orphan_urls

List orphan URLs in a Botify analysis — URLs that received visits from a search engine or social source per Google Analytics but were not crawled by the Botify crawler. Returns: next, previous, count, results, page, size. Medium and source must form a valid pair (e.g. organic with google, or social with facebook). Required: username, project_slug, analysis_slug, medium, source.

list_all_botify_segments

List segments (segments feature public metadata) for a Botify analysis. Returns: next, previous, count, results, page, size. Required: username, project_slug, analysis_slug.

list_all_botify_staticfiles_robots_txt_indexes

List all robots.txt files found on a Botify project's domains for a given analysis. The object is null for virtual robots.txt. Returns: next, previous, count, results, page, size. Required: username, project_slug, analysis_slug.

get_single_botify_staticfiles_robots_txt_index_by_id

Get the content of a specific robots.txt file from a Botify analysis by id. Returns: next, previous, count, results, page, size. Required: id, username, project_slug, analysis_slug.

get_single_botify_url_by_id

Gets the detail of an URL for an analysis. Required: id, username, project_slug, analysis_slug.

list_all_botify_urls

List Botify URLs for an analysis by executing a BQL query against the URLs collection. Returns URL detail records with id and datamodel-specific attributes; the attributes shape depends on the analysis's URLs Datamodel. Required: username, project_slug, analysis_slug.

get_single_botify_urls_agg_by_id

Run BQL aggregation queries against URLs in a Botify analysis. Accepts multiple queries in the request body (each with filters and aggs) and dispatches them, returning an array of query-dependent aggregation result objects whose structure reflects the dimensions and metrics defined in each BQL query. Required: username, project_slug, analysis_slug.

list_all_botify_urls_ais

Get AI suggestions for a specific URL within a Botify analysis. Returns the AI suggestions object with schema-specific fields. Required: username, project_slug, analysis_slug, url.

list_all_botify_urls_datamodels

Get the Botify Analysis datamodel describing the available URL fields for a specific analysis. Returns the datamodel object including attributes with analysis-specific field definitions whose shape depends on the crawl configuration and enabled features. Required: username, project_slug, analysis_slug.

list_all_botify_urls_datasets

List the available datasets (field groups) for a Botify analysis, used to discover queryable fields for BQL operations. Returns: datasets. Required: username, project_slug, analysis_slug.

list_all_botify_urls_exports

A list of the CSV Exports requests and their current status. Returns: job_id, job_url, job_status, nb_results, area, query, results, date_created. Required: username, project_slug, analysis_slug.

create_a_botify_urls_export

Creates a new UrlExport object and starts a task that will export the results into a csv. Returns the model id that manages the task. Returns: job_id, job_url, job_status, nb_results, area, query, results, date_created. Required: username, project_slug, analysis_slug.

get_single_botify_urls_export_by_id

Checks the status of an CSVUrlExportJob object. Returns json object with the status. Returns: job_id, job_url, job_status, nb_results, area, query, results, date_created. Required: id, username, project_slug, analysis_slug.

list_all_botify_urls_htmls

Get the HTML content of a specific URL within a Botify analysis. Returns the HTML content object for the requested URL from the crawl. Required: username, project_slug, analysis_slug, url.

list_all_botify_jobs

List all Botify jobs, optionally filtered by job type, project slug, or analysis slug. Returns: next, previous, count, results, page, size.

create_a_botify_job

Create a Botify job instance whose class depends on the job_type parameter sent. Returns: job_id, job_type, job_url, job_status, results, date_created, payload, user, metadata, crawl_date, project, analysis. Required: job_type, payload.

get_single_botify_job_by_id

Get a single Botify job by id. Returns: job_id, job_type, job_url, job_status, results, date_created, payload, user, metadata, crawl_date, project, analysis. Required: id.

list_all_botify_projects

List all active Botify projects for a user. Returns: next, previous, count, results, page, size. Required: username.

list_all_botify_account_filters

List all account saved filters for a Botify project. Returns each filter's name, identifier, filters, type, project_name, and created_date. Required: username, project_slug.

list_all_botify_collections

List all Botify collections for a project. Returns collection objects with their id and attributes containing collection-specific fields. Required: username, project_slug.

get_single_botify_collection_by_id

Get a single Botify collection by id including its datasets and field definitions. Returns: datasets, metadata. Required: id, username, project_slug.

list_all_botify_filters

List all saved filters for a Botify project, including each filter's name, ID, and filter value. Returns: name, filters, identifier, description, type, project_name, created_date. Required: username, project_slug.

get_single_botify_filter_by_id

Get a specific Botify project filter by id. Returns: name, filters, identifier, description, type, project_name, created_date, openapi, info, paths, security, servers, components. Required: id, username, project_slug.

create_a_botify_query

Run a query against project-level collections in Botify. Returns: next, previous, count, results, page, size. Required: username, project_slug, collections, query.

list_all_botify_saved_explorers

List all saved explorers for a Botify project. Returns each saved explorer with its uuid, name, type, description, query object, created_by and modified_by user details, and created_date and modified_date timestamps. Required: username, project_slug.

create_a_botify_values_list_clone

Clone all keyword groups of a Botify project to another project. Returns an empty 201 response on success. Required: username, project_slug, target_username, target_project.

list_all_botify_user_datasources_summary_by_projects

Get the datasources details for all projects of a Botify user. Returns: runnable, datasource, date_last_successful_revision, last_revision_status, stats, segments. Required: username.

list_all_botify_user_projects

List all active Botify projects for a user. Returns each project's name, slug, active status, date_created, url, timezone, last_analysis, current_settings, and associated user. Required: username.

get_single_botify_project_urls_agg_by_id

Execute multiple BQL aggregation queries across all completed analyses in a Botify project. Returns a dynamic aggregation results object with query-specific fields. nb_analyses is capped at 20. Required: username, project_slug.

Why Truto

Why use Truto’s MCP server for Botify

Other MCP servers give you a static tool list for one app. Truto gives you a managed, multi-tenant MCP infrastructure across 650+ integrations.

01

Auto-generated, always up to date

Tools are dynamically generated from curated documentation — not hand-coded. As integrations evolve, tools stay current without manual maintenance.

02

Fine-grained access control

Scope each MCP server to read-only, write-only, specific methods, or tagged tool groups. Expose only what your AI agent needs — nothing more.

03

Multi-tenant by design

Each MCP server is scoped to a single connected account with its own credentials. The URL itself is the auth token — no shared secrets, no credential leaking across tenants.

04

Works with every MCP client

Standard JSON-RPC 2.0 protocol. Paste the URL into Claude, ChatGPT, Cursor, or any MCP-compatible agent framework — tools are discovered automatically.

05

Built-in auth, rate limits, and error handling

Tool calls execute through Truto’s proxy layer with automatic OAuth refresh, rate-limit handling, and normalized error responses. No raw API plumbing in your agent.

06

Expiring and auditable servers

Create time-limited MCP servers for contractors or automated workflows. Optional dual-auth requires both the URL and a Truto API token for high-security environments.

How It Works

From zero to integrated

Go live with Botify in under an hour. No boilerplate, no maintenance burden.

01

Link your customer’s Botify account

Use Truto’s frontend SDK to connect your customer’s Botify account. We handle all OAuth and API key flows — you don’t need to create the OAuth app.

02

We handle authentication

Don’t spend time refreshing access tokens or figuring out secure storage. We handle it and inject credentials into every API request.

03

Call our API, we call Botify

Truto’s Proxy API is a 1-to-1 mapping of the Botify API. You call us, we call Botify, and pass the response back in the same cycle.

04

Unified response format

Every response follows a single format across all integrations. We translate Botify’s pagination into unified cursor-based pagination. Data is always in the result attribute.

FAQs

Common questions about Botify on Truto

Authentication, rate limits, data freshness, and everything else you need to know before you integrate.

How do end users authenticate their Botify account?

Truto handles the Botify auth flow for you, so your users connect their Botify workspace once and your app receives a managed connection. You don't need to store API tokens or handle refresh logic yourself.

Can we trigger and control crawls programmatically?

Yes. You can launch new analyses via create_a_botify_create_launch, and pause or resume running crawls with botify_analyses_pause and botify_analyses_resume — useful for CMS publish events or CI/CD hooks.

Does Truto support Botify Query Language (BQL) aggregations?

Yes. create_a_botify_query and get_single_botify_urls_agg_by_id let you run BQL aggregations to pull custom metrics grouped by depth, segment, status code, or any dimension Botify exposes.

How do we handle very large URL datasets?

For bulk data, use the async export pattern: call create_a_botify_urls_export to schedule the export, then poll get_single_botify_urls_export_by_id until it's ready. This is the recommended path for warehousing millions of URLs.

Can we access log-file and Google Analytics cross-referenced data?

Yes. Endpoints like list_all_botify_ganalytics_orphan_urls and list_all_botify_visits_orphan_urls expose URLs Botify has cross-referenced between crawl data and analytics, which is one of Botify's most differentiated datasets.

How fresh is the data returned by the Botify API?

Data freshness depends on when the underlying analysis was run in Botify — crawls are point-in-time snapshots rather than continuous streams. Trigger a new analysis via create_a_botify_create_launch when your users need up-to-date results.

Botify

Get Botify integrated into your app

Our team understands what it takes to make a Botify integration successful. A short, crisp 30 minute call with folks who understand the problem.