Better Search Console logoetter Search Console
ar flag
تسجيل الخروج

API Documentation

1. Introduction

The Better Search Console API gives you full programmatic access to manage your websites, URLs, sitemaps, indexation queues, prompt analyses, reports, and settings — everything you can do in the web interface.

The API is organized around REST principles. It uses standard HTTP methods, returns JSON responses, and uses token-based authentication.

Key features

  • Read all your SEO data (URLs, sitemaps, indexation status, PageSpeed)
  • Queue URLs for Google and Bing indexation
  • Manage sitemaps (add, process, delete)
  • Run AI prompt analyses
  • Generate reports, sitemaps, and robots.txt
  • Configure website settings programmatically

2. Authentication

All API requests require a token passed via the X-API-TOKEN HTTP header.

Generating a Token

  1. Log into Better Search Console
  2. Go to Settings
  3. Click Generate API Token
  4. Copy the 64-character token

Using the Token

curl -H "X-API-TOKEN: YOUR_TOKEN_HERE" https://www.better-search-console.com/api/websites
Keep your token secret. Anyone with your token can read and modify all your data. Regenerate it at any time from Settings.

3. Quick Start

Here's how to get started in 3 steps:

Step 1: Get your websites

curl -H "X-API-TOKEN: YOUR_TOKEN_HERE" \
  https://www.better-search-console.com/api/websites

Step 2: List URLs for a website

curl -H "X-API-TOKEN: YOUR_TOKEN_HERE" \
  "https://www.better-search-console.com/api/urls?website.id=1"

Step 3: Submit a URL for Google indexation

curl -X POST \
  -H "X-API-TOKEN: YOUR_TOKEN_HERE" \
  -H "Content-Type: application/json" \
  -d '{"url": "https://example.com/new-page"}' \
  https://www.better-search-console.com/api/indexation/google

4. Base URL

All API endpoints are relative to:

https://www.better-search-console.com/api

Example: to list websites, send a GET request to https://www.better-search-console.com/api/websites

5. Response Format

Read endpoints (GET) return JSON-LD format via API Platform:

{
  "@context": "/api/contexts/Website",
  "@id": "/api/websites",
  "@type": "hydra:Collection",
  "hydra:totalItems": 2,
  "hydra:member": [ ... ]
}

Write endpoints (POST/PUT/DELETE) return standard JSON:

{"message": "Added to Google queue", "url": "https://example.com/page"}

6. Pagination, Filtering & Sorting

Pagination

Collections return 30 items per page. Use the page parameter:

GET /api/urls?page=2

The response includes navigation links:

"hydra:view": {
  "hydra:first": "/api/urls?page=1",
  "hydra:last": "/api/urls?page=6",
  "hydra:next": "/api/urls?page=3"
}

Filtering

Use query parameters to filter results. Filter strategies:

StrategyDescriptionExample
exactExact match?website.id=1
partialContains (LIKE %value%)?url=blog

Combine multiple filters:

GET /api/urls?website.id=1&coverageState=indexed&url=blog&page=1

7. API Reference

7.1 Websites

GET/api/websites — List all your websites
GET/api/websites/{id} — Get a single website

Response fields

FieldTypeDescription
idintegerUnique identifier
namestringDisplay name
urlstringWebsite URL or sc-domain property
descriptionstringDescription
categorystringCategory
autoIndexingbooleanAuto-indexing enabled (premium)
autoSitemapRefreshbooleanAuto sitemap refresh (premium)
AutoUpdateStatusbooleanAuto status update (premium)
recapEmailbooleanRecap email enabled
indexationRequestTodayintegerIndexation requests used today
checkStatusRequestTodayintegerStatus checks used today

Example

curl -H "X-API-TOKEN: YOUR_TOKEN_HERE" \
  https://www.better-search-console.com/api/websites

Response 200

{
  "@context": "/api/contexts/Website",
  "@id": "/api/websites",
  "@type": "hydra:Collection",
  "hydra:totalItems": 2,
  "hydra:member": [
    {
      "@id": "/api/websites/1",
      "@type": "Website",
      "id": 1,
      "name": "My Blog",
      "url": "sc-domain:example.com",
      "description": "Personal blog about SEO",
      "category": "blog",
      "autoIndexing": true,
      "autoSitemapRefresh": true,
      "AutoUpdateStatus": false,
      "recapEmail": true,
      "indexationRequestToday": 3,
      "checkStatusRequestToday": 12
    }
  ]
}

7.2 URLs

GET/api/urls — List URLs
GET/api/urls/{id} — Get a single URL
DELETE/api/urls/{id} — Delete a URL
POST/api/urls/delete/bulk — Bulk delete URLs

Filters

ParameterStrategyExample
website.idexact?website.id=1
sitemap.idexact?sitemap.id=5
urlpartial?url=blog
coverageStatepartial?coverageState=indexed
coverageStateSlugexact?coverageStateSlug=submitted-and-indexed
indexingStatepartial?indexingState=submitted

List URLs

curl -H "X-API-TOKEN: YOUR_TOKEN_HERE" \
  "https://www.better-search-console.com/api/urls?website.id=1&coverageState=indexed&page=1"

Response 200

{
  "@context": "/api/contexts/Url",
  "@id": "/api/urls",
  "@type": "hydra:Collection",
  "hydra:totalItems": 156,
  "hydra:member": [
    {
      "@id": "/api/urls/42",
      "@type": "Url",
      "id": 42,
      "url": "https://example.com/blog/seo-tips",
      "sitemap": {"@id": "/api/sitemaps/3", "id": 3, "url": "https://example.com/sitemap.xml"},
      "website": {"@id": "/api/websites/1", "id": 1, "name": "My Blog", "url": "sc-domain:example.com"},
      "bingStatus": 1,
      "coverageState": "Submitted and indexed",
      "coverageStateSlug": "submitted-and-indexed",
      "crawledAs": "Googlebot smartphone",
      "googleCanonical": "https://example.com/blog/seo-tips",
      "indexingState": "Indexing allowed",
      "lastCrawlTime": "2025-06-15 08:30",
      "pageFetchState": "Successful",
      "robotsTxtState": "Allowed",
      "userCanonical": "https://example.com/blog/seo-tips",
      "lastCheck": "2025-06-20 14:00",
      "lastIndexingRequest": "2025-06-10 09:00",
      "lastIndexingRequestBing": "2025-06-10 09:05",
      "addedToQueueForBing": null,
      "addedToQueueForGoogle": null,
      "addedToQueueForIndexationCheck": null,
      "mustBeIndexed": true
    }
  ],
  "hydra:view": {
    "hydra:first": "/api/urls?page=1",
    "hydra:last": "/api/urls?page=6",
    "hydra:next": "/api/urls?page=2"
  }
}

Delete a URL

curl -X DELETE -H "X-API-TOKEN: YOUR_TOKEN_HERE" \
  https://www.better-search-console.com/api/urls/42

Response 200

{"message": "URL deleted"}

Bulk delete URLs

curl -X POST \
  -H "X-API-TOKEN: YOUR_TOKEN_HERE" \
  -H "Content-Type: application/json" \
  -d '{"website_id": 1, "urls": ["https://example.com/old-1", "https://example.com/old-2"]}' \
  https://www.better-search-console.com/api/urls/delete/bulk

Response 200

{"message": "URLs deleted", "deleted_count": 2, "not_found_count": 0}

7.3 Sitemaps

GET/api/sitemaps — List sitemaps
GET/api/sitemaps/{id} — Get a single sitemap
POST/api/sitemaps/add — Add a new sitemap
POST/api/sitemaps/{id}/process — Process (extract URLs)
POST/api/sitemaps/process-all — Process all sitemaps
DELETE/api/sitemaps/{id} — Delete a sitemap

Filters: website.id (exact), url (partial)

List sitemaps

curl -H "X-API-TOKEN: YOUR_TOKEN_HERE" \
  "https://www.better-search-console.com/api/sitemaps?website.id=1"

Response 200

{
  "@context": "/api/contexts/Sitemap",
  "@id": "/api/sitemaps",
  "@type": "hydra:Collection",
  "hydra:totalItems": 3,
  "hydra:member": [
    {
      "@id": "/api/sitemaps/1",
      "@type": "Sitemap",
      "id": 1,
      "url": "https://example.com/sitemap.xml",
      "lastmod": "2025-06-20",
      "website": {"@id": "/api/websites/1", "id": 1, "name": "My Blog", "url": "sc-domain:example.com"},
      "lastRead": "2025-06-21 10:00"
    }
  ]
}

Add a sitemap

curl -X POST \
  -H "X-API-TOKEN: YOUR_TOKEN_HERE" \
  -H "Content-Type: application/json" \
  -d '{"website_id": 1, "url": "https://example.com/sitemap-blog.xml"}' \
  https://www.better-search-console.com/api/sitemaps/add

Response 201

{"message": "Sitemap added successfully", "url": "https://example.com/sitemap-blog.xml"}

Process a sitemap

curl -X POST -H "X-API-TOKEN: YOUR_TOKEN_HERE" \
  https://www.better-search-console.com/api/sitemaps/1/process

Response 200

{"message": "Sitemap processed", "urls_found": 47}

Process all sitemaps

curl -X POST \
  -H "X-API-TOKEN: YOUR_TOKEN_HERE" \
  -H "Content-Type: application/json" \
  -d '{"website_id": 1}' \
  https://www.better-search-console.com/api/sitemaps/process-all

Response 200

{"message": "3 sitemap(s) processed", "processed": 3, "errors": []}

Delete a sitemap

curl -X DELETE -H "X-API-TOKEN: YOUR_TOKEN_HERE" \
  https://www.better-search-console.com/api/sitemaps/1

Response 200

{"message": "Sitemap deleted"}

7.4 Indexation

Queue URLs for Google/Bing indexation or status checks. Subject to daily rate limits.

POST/api/indexation/google — Queue for Google
POST/api/indexation/bing — Queue for Bing
POST/api/indexation/bulk — Bulk queue Google/Bing
POST/api/indexation/check — Check indexation status
POST/api/indexation/check/bulk — Bulk check status
POST/api/indexation/disable/bulk — Disable & remove
POST/api/indexation/reenable/bulk — Re-enable indexation
PUT/api/indexation/coverage-state — Update coverage state

Queue for Google

curl -X POST \
  -H "X-API-TOKEN: YOUR_TOKEN_HERE" \
  -H "Content-Type: application/json" \
  -d '{"url": "https://example.com/my-page"}' \
  https://www.better-search-console.com/api/indexation/google

Response 200

{"message": "Added to Google queue", "url": "https://example.com/my-page"}

Queue for Bing

curl -X POST \
  -H "X-API-TOKEN: YOUR_TOKEN_HERE" \
  -H "Content-Type: application/json" \
  -d '{"url": "https://example.com/my-page"}' \
  https://www.better-search-console.com/api/indexation/bing

Response 200

{"message": "Added to Bing queue", "url": "https://example.com/my-page"}

Bulk queue (Google + Bing)

curl -X POST \
  -H "X-API-TOKEN: YOUR_TOKEN_HERE" \
  -H "Content-Type: application/json" \
  -d '{"website_id": 1, "urls": ["https://example.com/page-1", "https://example.com/page-2"], "google": true, "bing": true}' \
  https://www.better-search-console.com/api/indexation/bulk

Response 200

{"message": "Bulk queue processed", "success_count": 2, "error_count": 0}

Check indexation status

curl -X POST \
  -H "X-API-TOKEN: YOUR_TOKEN_HERE" \
  -H "Content-Type: application/json" \
  -d '{"url": "https://example.com/my-page"}' \
  https://www.better-search-console.com/api/indexation/check

Response 200

{"message": "Added to indexation check queue", "url": "https://example.com/my-page"}

Bulk check status

curl -X POST \
  -H "X-API-TOKEN: YOUR_TOKEN_HERE" \
  -H "Content-Type: application/json" \
  -d '{"website_id": 1, "urls": ["https://example.com/page-1", "https://example.com/page-2"]}' \
  https://www.better-search-console.com/api/indexation/check/bulk

Response 200

{"message": "Bulk check queue processed", "success_count": 2, "error_count": 0}

Disable & queue for removal

curl -X POST \
  -H "X-API-TOKEN: YOUR_TOKEN_HERE" \
  -H "Content-Type: application/json" \
  -d '{"website_id": 1, "urls": ["https://example.com/old-page"]}' \
  https://www.better-search-console.com/api/indexation/disable/bulk

Response 200

{"message": "URLs marked for removal", "success_count": 1, "error_count": 0}

Re-enable indexation

curl -X POST \
  -H "X-API-TOKEN: YOUR_TOKEN_HERE" \
  -H "Content-Type: application/json" \
  -d '{"website_id": 1, "urls": ["https://example.com/old-page"]}' \
  https://www.better-search-console.com/api/indexation/reenable/bulk

Response 200

{"message": "Indexation re-enabled", "success_count": 1, "error_count": 0}

Update coverage state

curl -X PUT \
  -H "X-API-TOKEN: YOUR_TOKEN_HERE" \
  -H "Content-Type: application/json" \
  -d '{"url": "https://example.com/my-page", "state": "Submitted and indexed"}' \
  https://www.better-search-console.com/api/indexation/coverage-state

Response 200

{"message": "Coverage state updated", "url": "https://example.com/my-page", "state": "Submitted and indexed"}

Response 403 (limit reached)

{"error": "Daily indexation limit reached", "limit_reached": true}

7.5 URL Data (PageSpeed)

GET/api/url_data — List URL data
GET/api/url_data/{id} — Get specific URL data

Filters: url.id (exact)

Example

curl -H "X-API-TOKEN: YOUR_TOKEN_HERE" \
  "https://www.better-search-console.com/api/url_data?url.id=42"

Response 200

{
  "@context": "/api/contexts/UrlData",
  "@id": "/api/url_data",
  "@type": "hydra:Collection",
  "hydra:totalItems": 1,
  "hydra:member": [
    {
      "@id": "/api/url_data/15",
      "@type": "UrlData",
      "id": 15,
      "pageSpeedJson": {
        "performance": 92,
        "accessibility": 98,
        "best_practices": 95,
        "seo": 100,
        "lcp": 1.2,
        "fid": 12,
        "cls": 0.05
      },
      "lastUpdate": "2025-06-18T14:30:00+00:00"
    }
  ]
}

7.6 Prompt Analysis

GET/api/prompt_analyses — List analyses
GET/api/prompt_analyses/{id} — Get a single analysis
POST/api/prompt-analyses/create — Create analysis
PUT/api/prompt-analyses/{id}/keywords — Update keywords

Filters: website.id (exact)

List analyses

curl -H "X-API-TOKEN: YOUR_TOKEN_HERE" \
  "https://www.better-search-console.com/api/prompt_analyses?website.id=1"

Response 200

{
  "@context": "/api/contexts/PromptAnalysis",
  "@id": "/api/prompt_analyses",
  "@type": "hydra:Collection",
  "hydra:totalItems": 5,
  "hydra:member": [
    {
      "@id": "/api/prompt_analyses/1",
      "@type": "PromptAnalysis",
      "id": 1,
      "prompt": "What are the best SEO tools?",
      "date": "2025-06-15T10:00:00+00:00",
      "models": ["gpt-4", "claude-3-opus", "gemini-pro"],
      "modelResponses": "{\"gpt-4\": \"Here are the best...\", \"claude-3-opus\": \"For SEO...\"}",
      "targetedKeywords": ["SEO tools", "keyword research"]
    }
  ]
}

Create analysis

curl -X POST \
  -H "X-API-TOKEN: YOUR_TOKEN_HERE" \
  -H "Content-Type: application/json" \
  -d '{"website_id": 1, "prompt": "Best SEO tools for e-commerce", "models": ["gpt-4", "claude-3-opus"], "targeted_keywords": ["SEO", "e-commerce"]}' \
  https://www.better-search-console.com/api/prompt-analyses/create

Response 201

{"message": "Prompt analysis created", "id": 12}

Update keywords

curl -X PUT \
  -H "X-API-TOKEN: YOUR_TOKEN_HERE" \
  -H "Content-Type: application/json" \
  -d '{"targeted_keywords": ["SEO", "tools", "ranking", "traffic"]}' \
  https://www.better-search-console.com/api/prompt-analyses/12/keywords

Response 200

{"message": "Keywords updated", "id": 12}

7.7 Models

GET/api/models — List available AI models
GET/api/models/{id} — Get a model

Example

curl -H "X-API-TOKEN: YOUR_TOKEN_HERE" \
  https://www.better-search-console.com/api/models

Response 200

{
  "@context": "/api/contexts/Models",
  "@id": "/api/models",
  "@type": "hydra:Collection",
  "hydra:totalItems": 3,
  "hydra:member": [
    {"@id": "/api/models/1", "@type": "Models", "id": 1, "name": "gpt-4", "price": 0.03},
    {"@id": "/api/models/2", "@type": "Models", "id": 2, "name": "claude-3-opus", "price": 0.025},
    {"@id": "/api/models/3", "@type": "Models", "id": 3, "name": "gemini-pro", "price": 0.01}
  ]
}

7.8 Blog Posts

GET/api/blog_posts — List blog posts
GET/api/blog_posts/{id} — Get a post

Example

curl -H "X-API-TOKEN: YOUR_TOKEN_HERE" \
  https://www.better-search-console.com/api/blog_posts

Response 200

{
  "@context": "/api/contexts/BlogPost",
  "@id": "/api/blog_posts",
  "@type": "hydra:Collection",
  "hydra:totalItems": 1,
  "hydra:member": [
    {
      "@id": "/api/blog_posts/1",
      "@type": "BlogPost",
      "id": 1,
      "title": "How to improve your SEO in 2025",
      "content": "<p>Here are the top strategies...</p>",
      "createdAt": "2025-05-10T12:00:00+00:00",
      "slug": "how-to-improve-your-seo-in-2025",
      "image": "/uploads/blog/seo-2025.jpg",
      "metaTitle": "Improve SEO 2025",
      "metaDescription": "Learn the best strategies...",
      "ogTitle": "How to improve your SEO in 2025",
      "ogDescription": "Complete guide for SEO",
      "keywords": "SEO, 2025, Google",
      "articleSection": "SEO"
    }
  ]
}

7.9 Reports

POST/api/reports/generate — Generate PDF report (premium only)

Example

curl -X POST \
  -H "X-API-TOKEN: YOUR_TOKEN_HERE" \
  -H "Content-Type: application/json" \
  -d '{"website_id": 1, "start_date": "2025-01-01", "end_date": "2025-01-31"}' \
  -o report-january.pdf \
  https://www.better-search-console.com/api/reports/generate

Response 200

Binary PDF file (Content-Type: application/pdf). Use -o filename.pdf to save.

Response 403

{"error": "Report generation requires a premium subscription"}

7.10 Settings

PUT/api/settings/website/{id} — Update settings
POST/api/settings/website/{id}/service-account — Upload service account
DELETE/api/settings/website/{id}/service-account — Delete service account
PUT/api/settings/website/{id}/bing-key — Set Bing API key

Update website settings

Only pass the fields you want to change.

curl -X PUT \
  -H "X-API-TOKEN: YOUR_TOKEN_HERE" \
  -H "Content-Type: application/json" \
  -d '{"autoIndexing": true, "autoSitemapRefresh": true, "autoUpdateStatus": false, "recapEmail": true}' \
  https://www.better-search-console.com/api/settings/website/1

Response 200

{"message": "Website settings updated"}
Premium required: autoIndexing, autoSitemapRefresh, and autoUpdateStatus can only be enabled with Starter/Pro/Master.

Upload Google service account

Send as multipart/form-data with a json_key file field.

curl -X POST \
  -H "X-API-TOKEN: YOUR_TOKEN_HERE" \
  -F "json_key=@/path/to/service-account.json" \
  https://www.better-search-console.com/api/settings/website/1/service-account

Response 200

{"message": "Service account uploaded"}

Delete service account

curl -X DELETE -H "X-API-TOKEN: YOUR_TOKEN_HERE" \
  https://www.better-search-console.com/api/settings/website/1/service-account

Response 200

{"message": "Service account deleted"}

Set Bing API key

curl -X PUT \
  -H "X-API-TOKEN: YOUR_TOKEN_HERE" \
  -H "Content-Type: application/json" \
  -d '{"bing_api_key": "your-32-char-bing-api-key-here"}' \
  https://www.better-search-console.com/api/settings/website/1/bing-key

Response 200

{"message": "Bing API key updated"}

7.11 Custom Dashboards

POST/api/dashboards — Create dashboard (max 3)
PUT/api/dashboards/{id} — Update dashboard
DELETE/api/dashboards/{id} — Delete dashboard
POST/api/dashboards/{id}/widgets — Save widgets

Create dashboard

curl -X POST \
  -H "X-API-TOKEN: YOUR_TOKEN_HERE" \
  -H "Content-Type: application/json" \
  -d '{"website_id": 1, "name": "SEO Overview"}' \
  https://www.better-search-console.com/api/dashboards

Response 201

{"message": "Dashboard created", "id": 5}

Update dashboard

curl -X PUT \
  -H "X-API-TOKEN: YOUR_TOKEN_HERE" \
  -H "Content-Type: application/json" \
  -d '{"name": "Main Dashboard", "is_default": true}' \
  https://www.better-search-console.com/api/dashboards/5

Response 200

{"message": "Dashboard updated"}

Delete dashboard

curl -X DELETE -H "X-API-TOKEN: YOUR_TOKEN_HERE" \
  https://www.better-search-console.com/api/dashboards/5

Response 200

{"message": "Dashboard deleted"}

Save widgets

curl -X POST \
  -H "X-API-TOKEN: YOUR_TOKEN_HERE" \
  -H "Content-Type: application/json" \
  -d '{"widgets": [{"type": "chart", "title": "Indexed Pages", "span": 2, "config": {"metric": "indexed_count"}}, {"type": "counter", "title": "Total URLs", "span": 1, "config": {}}]}' \
  https://www.better-search-console.com/api/dashboards/5/widgets

Response 200

{"message": "Widgets saved", "count": 2}

7.12 Tools

POST/api/tools/generate-sitemap — Generate sitemap XML
POST/api/tools/generate-robots — Generate robots.txt

Generate sitemap

Crawls a website and generates sitemap XML.

curl -X POST \
  -H "X-API-TOKEN: YOUR_TOKEN_HERE" \
  -H "Content-Type: application/json" \
  -d '{"website_url": "https://example.com", "max_urls": 100}' \
  https://www.better-search-console.com/api/tools/generate-sitemap

Response 200

{
  "sitemap_xml": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<urlset xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\">\n  <url><loc>https://example.com/</loc></url>\n  <url><loc>https://example.com/about</loc></url>\n</urlset>"
}

Generate robots.txt

curl -X POST \
  -H "X-API-TOKEN: YOUR_TOKEN_HERE" \
  -H "Content-Type: application/json" \
  -d '{"user_agents": [{"name": "*", "disallow": ["/admin", "/private"], "allow": ["/public"], "crawl_delay": 1}, {"name": "Googlebot", "disallow": [], "allow": ["/"]}], "sitemaps": ["https://example.com/sitemap.xml"]}' \
  https://www.better-search-console.com/api/tools/generate-robots

Response 200

{
  "robots_txt": "User-agent: *\nDisallow: /admin\nDisallow: /private\nAllow: /public\nCrawl-delay: 1\n\nUser-agent: Googlebot\nAllow: /\n\nSitemap: https://example.com/sitemap.xml"
}

7.13 Google User Profile

GET/api/google_users — Get your profile
GET/api/google_users/{id} — Get by ID (own only)
Privacy: Only returns your own profile. You cannot access other users.

Example

curl -H "X-API-TOKEN: YOUR_TOKEN_HERE" \
  https://www.better-search-console.com/api/google_users

Response 200

{
  "@context": "/api/contexts/GoogleUser",
  "@id": "/api/google_users",
  "@type": "hydra:Collection",
  "hydra:totalItems": 1,
  "hydra:member": [
    {
      "@id": "/api/google_users/7",
      "@type": "GoogleUser",
      "id": 7,
      "nickname": "John",
      "subscriptionType": "pro",
      "newsletterEmail": true,
      "hasPreviouslyBeenPremium": false
    }
  ]
}

8. Rate Limits

Indexation and verification endpoints share daily limits with the web interface:

PlanIndexation Requests/dayStatus Checks/day
Free1050
Starter100200
Pro200500
MasterUnlimitedUnlimited

When you hit the limit, endpoints return HTTP 403 with:

{"error": "Daily indexation limit reached", "limit_reached": true}

Limits reset daily at midnight UTC. The current usage is visible via the /api/websites endpoint (indexationRequestToday and checkStatusRequestToday fields).

9. Error Responses

CodeMeaningExample body
400Bad request (missing or invalid parameters){"error": "Missing \"url\" parameter"}
401Missing or invalid API token{"error": "Invalid or missing API token"}
403Not authorized, premium required, or limit reached{"error": "Daily indexation limit reached", "limit_reached": true}
404Resource not found or access denied{"error": "URL not found or access denied"}
409Conflict (duplicate resource){"error": "This sitemap already exists"}
422Validation failed{"error": "Sitemap is not accessible (HTTP 404)"}
500Internal server error{"error": "Error processing sitemap: ..."}

10. Changelog

v1.0.0 — July 2026

  • Initial API release
  • Read endpoints: Websites, URLs, Sitemaps, URL Data, Prompt Analyses, Models, Blog Posts, Google User
  • Write endpoints: Indexation (Google/Bing/bulk/check), Sitemap management, URL deletion, Prompt Analysis creation, Settings, Custom Dashboards, Reports, Tools
  • Token-based authentication via X-API-TOKEN header
  • Rate limits enforced per subscription plan
  • User data isolation (all data scoped to authenticated user)