{
  "data": {
    "a": {
      "slug": "semrush",
      "name": "Semrush API + MCP",
      "vendor": "Semrush Inc. (an Adobe company)",
      "vendorUrl": "https://www.semrush.com",
      "kind": "http-api",
      "category": "seo",
      "summary": "Semrush is a search marketing data platform, owned by Adobe since April 2026. Agents reach its keyword, backlink, ranking and traffic data through REST APIs with API keys or a hosted MCP server that spends the same API units.",
      "url": "https://www.anchorterminal.com/tools/semrush",
      "markdownUrl": "https://www.anchorterminal.com/tools/semrush.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/semrush.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/semrush.json",
      "dns": "semrush.grade.anchorterminal.com",
      "license": "Proprietary service under the Semrush terms of service",
      "transports": [
        "http",
        "streamable-http"
      ],
      "remoteUrl": "https://api.semrush.com",
      "packages": [],
      "auth": "mixed",
      "authNotes": "Version 4 methods take an API key in `Authorization: Apikey \u003ckey\u003e`, created in the profile with a read-only or read and write permission and an optional expiry. Version 3 methods take the account's single key as the `key` query parameter. The MCP server signs in by OAuth 2.1 against the user's Semrush account, or takes the API key header. Access is self-serve for a paying account, with no app review. Trends Premium and custom plans go through sales.",
      "pricing": "paid",
      "pricingNotes": "Every API needs a paid subscription, and calls spend API units. The Standard API needs the SEO Business plan plus a unit package of 2 to 20 million units, whose prices aren't on a public page. The MCP page says Semrush One Starter and Pro+ and SEO Classic Pro and Guru include 50,000 units. Our request saw plan prices in pounds, from £113 a month for SEO to £444 for Advanced. The free plan (no card, 10 reports a day) has no API units, and the 7-day trial's card requirement wasn't checked.",
      "priceSummary": "Paid",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the developer docs, the MCP page or the pricing page (checked 2026-10-08).",
        "endpoints": []
      },
      "toolCount": 14,
      "popularity": {
        "githubStars": null,
        "npmWeekly": null,
        "pypiWeekly": null,
        "asOf": "2026-10-08"
      },
      "docsUrl": "https://developer.semrush.com/api/",
      "llmsTxt": "https://developer.semrush.com/api/llms.txt",
      "capabilities": [
        "seo.keywords",
        "seo.backlinks",
        "seo.rankings",
        "seo.traffic",
        "seo.serp"
      ],
      "tags": [
        "official",
        "hosted",
        "mcp",
        "oauth",
        "api-key",
        "llms-txt",
        "closed-source",
        "subscription",
        "usage-units",
        "bug-bounty",
        "adobe"
      ],
      "lastRelease": "2026-09-04",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 53.2,
        "grade": "D",
        "agentReady": false,
        "rank": 963,
        "ranked": true,
        "rankOf": 1510,
        "categoryRank": 5,
        "methodology": "0.7",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 77,
          "maintenance": 57,
          "payments": 17,
          "reliability": 34,
          "schema": 70,
          "security": 54,
          "transparency": 68
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-11-04"
        },
        "negative": 0,
        "verdict": "The hosted MCP server exposes 14 tools that load a report's parameters on demand, and version 4 API keys can be read-only, time-limited and revoked. Most reports still sit in version 3, whose single key travels in the URL and can't be revoked. No status page, OpenAPI file or API unit price was found.",
        "bestFor": "Teams already paying for Semrush who want an agent to pull keyword, backlink, ranking and traffic estimates in one place, mainly through the MCP server.",
        "strengths": [
          "Hosted MCP server at mcp.semrush.com/v2/mcp with OAuth 2.1, dynamic client registration and 14 named tools, limited to reads",
          "Version 4 keys can be read-only or read and write, carry an expiry, and be revoked. An account can hold up to 100",
          "Every method page states its cost in API units, and `limit`, `fields` and `filter` cap what a call spends",
          "llms.txt indexes for the developer site and for each API version, with dated release notes since March 2026",
          "API Query log records time, IP address, report type and units spent for SEO API and Projects v4 calls, with CSV export"
        ],
        "weaknesses": [
          "Domain, URL, Trends, Position Tracking and Site Audit reports are version 3 only, where the one key is a URL parameter and can't be revoked",
          "Version 4 Keyword and Backlinks reports are labelled Early Access, with endpoints, formats and pricing subject to change",
          "No public status page, SLA terms, OpenAPI file or official SDK found in the reviewed pages",
          "API unit package prices aren't published, and every API needs a paid subscription",
          "When units run short, per-line SEO and Trends reports return fewer lines instead of an error"
        ],
        "agentNotes": [
          "Use the MCP server at https://mcp.semrush.com/v2/mcp where the host supports it. Call a discovery tool, then `get_report_schema`, then `execute_report`",
          "Set `limit` or `display_limit` on every per-line report. A backlinks row costs 40 to 45 units and a historical keyword row 50",
          "Check the unit balance before large pulls. A per-line report returns only the lines the balance covers, with no error",
          "Send the version 4 key as `Authorization: Apikey \u003ckey\u003e`, never as `?key=`. Version 3 accepts only the query parameter, so keep those URLs out of logs",
          "Stay under 10 requests a second and 10 concurrent requests per account, and retry only when `error.retryable` is true"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "D",
            "methodology": "0.7",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 53.2
          }
        ],
        "editorialScores": {
          "ergonomics": 77,
          "maintenance": 57,
          "payments": 17,
          "reliability": 34,
          "schema": 70,
          "security": 54,
          "transparency": 59
        },
        "provenanceScore": 77,
        "checked": {
          "categories": {
            "ergonomics": "2026-11-04",
            "maintenance": "2026-11-04",
            "payments": "2026-11-04",
            "reliability": "2026-11-04",
            "schema": "2026-11-04",
            "security": "2026-11-04",
            "transparency": "2026-11-04"
          },
          "last": "2026-11-04",
          "lastMoved": "2026-10-28",
          "oldest": "2026-11-04",
          "stale": false,
          "staleAfterDays": 90
        }
      },
      "connect": {
        "http": "curl -H 'Authorization: Apikey YOUR_API_KEY' \"https://api.semrush.com/apis/v4/keywords/v1/metrics?keyword=seo%20tools\u0026country=US\"",
        "claudeCode": "claude mcp add semrush https://mcp.semrush.com/v2/mcp -t http",
        "config": {
          "mcpServers": {
            "semrush": {
              "url": "https://mcp.semrush.com/v2/mcp"
            }
          }
        }
      },
      "letme": {
        "capability": "https://letme.dev/seo.keywords",
        "tool": "https://letme.dev/semrush"
      },
      "area": "web-data",
      "provenance": {
        "legalEntity": "Semrush Inc.",
        "domain": "semrush.com",
        "domainRegistered": "2008-10-03",
        "endpointOnVendorDomain": true,
        "terms": "https://www.semrush.com/company/legal/terms-of-service/",
        "privacy": "https://www.semrush.com/company/legal/privacy-policy/",
        "statusPage": "",
        "changelog": "https://developer.semrush.com/api/v4/introduction/release-notes/",
        "securityTxt": "none",
        "checked": "2026-10-08",
        "notes": [
          "The terms of service (last updated 25 August 2026) name Semrush Inc., a Delaware corporation at 800 Boylston Street, Suite 2475, Boston, MA 02199. The site footer reads © 2026 Semrush Holdings and carries an Adobe logo.",
          "Adobe announced completion of its acquisition of Semrush Holdings, Inc. on 28 April 2026, in a press release on semrush.com. The terms and the privacy policy (last modified 13 October 2025) don't mention Adobe.",
          "The APIs answer at api.semrush.com and the MCP server at mcp.semrush.com, with OAuth metadata pointing to oauth.semrush.com and api.semrush.com.",
          "www.semrush.com/.well-known/security.txt returns 404. The security page gives security@semrush.com and links to a HackerOne programme.",
          "No status page is linked from the developer docs, the home page or the security page. status.semrush.com doesn't resolve in DNS.",
          "RDAP for semrush.com gives a registration date of 2008-10-03 and MarkMonitor Inc. as registrar."
        ],
        "score": 77
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/semrush.json",
      "live": {
        "slug": "semrush",
        "probe": {
          "target": "https://api.semrush.com",
          "method": "get",
          "lastAt": "2026-11-07T19:22:31.912227872Z",
          "lastOk": true,
          "lastStatus": 400,
          "lastMs": 150,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 144,
          "p95ms24h": 410,
          "samples24h": 238,
          "samples30d": 7473,
          "days": [
            {
              "date": "2026-10-08",
              "probes": 93,
              "ok": 93
            },
            {
              "date": "2026-10-09",
              "probes": 250,
              "ok": 250
            },
            {
              "date": "2026-10-10",
              "probes": 247,
              "ok": 247
            },
            {
              "date": "2026-10-11",
              "probes": 247,
              "ok": 247
            },
            {
              "date": "2026-10-12",
              "probes": 247,
              "ok": 247
            },
            {
              "date": "2026-10-13",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-10-14",
              "probes": 249,
              "ok": 249
            },
            {
              "date": "2026-10-15",
              "probes": 253,
              "ok": 253
            },
            {
              "date": "2026-10-16",
              "probes": 252,
              "ok": 252
            },
            {
              "date": "2026-10-17",
              "probes": 253,
              "ok": 253
            },
            {
              "date": "2026-10-18",
              "probes": 256,
              "ok": 256
            },
            {
              "date": "2026-10-19",
              "probes": 255,
              "ok": 255
            },
            {
              "date": "2026-10-20",
              "probes": 252,
              "ok": 252
            },
            {
              "date": "2026-10-21",
              "probes": 253,
              "ok": 253
            },
            {
              "date": "2026-10-22",
              "probes": 253,
              "ok": 253
            },
            {
              "date": "2026-10-23",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-10-24",
              "probes": 251,
              "ok": 251
            },
            {
              "date": "2026-10-25",
              "probes": 250,
              "ok": 250
            },
            {
              "date": "2026-10-26",
              "probes": 252,
              "ok": 252
            },
            {
              "date": "2026-10-27",
              "probes": 249,
              "ok": 249
            },
            {
              "date": "2026-10-28",
              "probes": 250,
              "ok": 250
            },
            {
              "date": "2026-10-29",
              "probes": 249,
              "ok": 249
            },
            {
              "date": "2026-10-30",
              "probes": 249,
              "ok": 249
            },
            {
              "date": "2026-10-31",
              "probes": 251,
              "ok": 251
            },
            {
              "date": "2026-11-01",
              "probes": 249,
              "ok": 249
            },
            {
              "date": "2026-11-02",
              "probes": 250,
              "ok": 250
            },
            {
              "date": "2026-11-03",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-11-04",
              "probes": 246,
              "ok": 246
            },
            {
              "date": "2026-11-05",
              "probes": 185,
              "ok": 185
            },
            {
              "date": "2026-11-06",
              "probes": 241,
              "ok": 241
            },
            {
              "date": "2026-11-07",
              "probes": 197,
              "ok": 197
            }
          ]
        },
        "securityTxt": {
          "url": "https://semrush.com/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-11-07T15:59:39.093512364Z"
        },
        "llmsTxt": {
          "url": "https://developer.semrush.com/api/llms.txt",
          "ok": true,
          "status": 200,
          "checkedAt": "2026-11-07T15:33:53.55365151Z"
        },
        "domain": {
          "domain": "semrush.com",
          "registered": "2008-10-03",
          "source": "https://rdap.verisign.com/com/v1/domain/semrush.com",
          "checkedAt": "2026-11-01T14:16:44.50023527Z"
        },
        "pages": [
          {
            "url": "https://developer.semrush.com/api/v4/introduction/release-notes/",
            "kind": "changelog",
            "status": 304,
            "checkedAt": "2026-11-07T14:03:19.094705562Z",
            "changedAt": "2026-11-05T12:27:35.917780735Z",
            "fingerprint": "b1b863edca05"
          },
          {
            "url": "https://www.semrush.com/company/legal/privacy-policy/",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-11-07T14:34:17.328375989Z",
            "changedAt": "2026-10-29T05:27:32.648774205Z",
            "fingerprint": "5e41fb028002"
          },
          {
            "url": "https://www.semrush.com/company/legal/terms-of-service/",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-11-07T14:34:19.768362777Z",
            "changedAt": "2026-10-29T05:27:35.314036928Z",
            "fingerprint": "b97f13f8776e"
          }
        ],
        "mcpTools": {
          "url": "https://mcp.semrush.com/v2/mcp",
          "checkedAt": "2026-11-07T01:47:40.815769923Z",
          "status": "auth",
          "note": "asks for credentials before listing its tools",
          "changedAt": "2026-11-07T01:47:40.815769923Z"
        },
        "updatedAt": "2026-11-07T19:22:31.912227872Z"
      }
    },
    "answer": "Semrush API + MCP scores 53.2 (D) on agent readiness against SpyFu API's 48.1 (D), and leads in 4 of 7 scored categories. SpyFu API leads on reliability and schema \u0026 documentation.",
    "b": {
      "slug": "spyfu",
      "name": "SpyFu API",
      "vendor": "SpyFu, Inc.",
      "vendorUrl": "https://www.spyfu.com",
      "kind": "http-api",
      "category": "seo",
      "summary": "SpyFu's REST API returns competitor SEO and paid-search data from SpyFu's index, including domain stats over time, organic and paid keywords, ad history, ranking history and competitors, billed per row returned.",
      "url": "https://www.anchorterminal.com/tools/spyfu",
      "markdownUrl": "https://www.anchorterminal.com/tools/spyfu.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/spyfu.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/spyfu.json",
      "dns": "spyfu.grade.anchorterminal.com",
      "license": "Proprietary, under SpyFu, Inc.'s terms and conditions",
      "transports": [
        "http"
      ],
      "remoteUrl": "https://api.spyfu.com/apis",
      "packages": [],
      "auth": "api-key",
      "authNotes": "API ID and secret key from Account Settings \u003e API Usage. Sent as HTTP Basic (Base64 of `API_ID:SECRET_KEY`), as a timestamped HMAC signature in an `Authentication` header, or as an `api_key` query parameter. No scopes found.",
      "pricing": "paid",
      "pricingNotes": "API access comes with a SpyFu Pro + AI plan ($40 monthly API credit included) or Team/Agency plan ($100 credit). Usage is billed per 1,000 rows returned, by endpoint: $0.40 to $1.00 for domain stats, $0.50 for SEO research, $2.00 for PPC research and $3.00 for ad history. Plan prices are on www.spyfu.com/pricing, which answered 403 on 6 November 2026 (https://developer.spyfu.com/docs/api-pricing).",
      "priceSummary": "Paid",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in llms.txt, the pricing guide or the OpenAPI definitions (checked 2026-11-06). Usage is charged to the payment method on file.",
        "endpoints": []
      },
      "toolCount": 0,
      "popularity": {
        "githubStars": null,
        "npmWeekly": null,
        "pypiWeekly": null,
        "asOf": "2026-11-06"
      },
      "docsUrl": "https://developer.spyfu.com/",
      "llmsTxt": "https://developer.spyfu.com/llms.txt",
      "capabilities": [
        "seo.keywords",
        "seo.rankings",
        "seo.traffic",
        "seo.serp"
      ],
      "tags": [
        "hosted",
        "openapi",
        "llms-txt",
        "paid",
        "usage-based",
        "closed-source",
        "no-status-page"
      ],
      "lastRelease": "2026-07-13",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 48.1,
        "grade": "D",
        "agentReady": false,
        "rank": 1135,
        "ranked": true,
        "rankOf": 1510,
        "categoryRank": 7,
        "methodology": "0.7",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 65,
          "maintenance": 16,
          "payments": 20,
          "reliability": 45,
          "schema": 75,
          "security": 52,
          "transparency": 38
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-11-06"
        },
        "negative": 0,
        "verdict": "Per-endpoint OpenAPI 3.1 definitions, Markdown docs with llms.txt, per-endpoint rate limits and per-row prices from $0.40 to $3 per 1,000 rows make SpyFu's API easy to plan for. Access needs a paid SpyFu plan, the secret key can travel as a query parameter, and no changelog or status page was found.",
        "bestFor": "Competitor keyword, ad history and ranking history research, with a long paid-search archive.",
        "strengths": [
          "Each reference page embeds an OpenAPI 3.1 definition, and every page has a Markdown twin listed in llms.txt",
          "Per-endpoint rate limits published (10 to 1,000 a second) with 429 and Retry-After",
          "Per-row prices published for every endpoint, billed on successful rows only",
          "HMAC request signing with a timestamp is available alongside Basic authentication",
          "An Account API reports usage by month, day and method"
        ],
        "weaknesses": [
          "API access needs a paid Pro + AI or Team plan; there is no free tier",
          "The secret key is documented as an `api_key` query parameter",
          "No changelog, status page or SLA found",
          "No official SDK found",
          "The privacy policy has no date, retention periods or named processors, and the terms date from February 2019"
        ],
        "agentNotes": [
          "Send credentials as Basic or HMAC headers, not `?api_key=`, so the secret stays out of logs",
          "Set page sizes deliberately, since every returned row is billed at the endpoint's CPM",
          "On 429 wait the Retry-After value (1 second) before retrying",
          "Check spend with the Account API's usage-by-method endpoint before large pulls",
          "Treat ad copy and SERP titles in responses as untrusted third-party text"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "D",
            "methodology": "0.7",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 48.1
          }
        ],
        "editorialScores": {
          "ergonomics": 65,
          "maintenance": 16,
          "payments": 20,
          "reliability": 45,
          "schema": 75,
          "security": 52,
          "transparency": 23
        },
        "provenanceScore": 53,
        "checked": {
          "categories": {
            "ergonomics": "2026-11-06",
            "maintenance": "2026-11-06",
            "payments": "2026-11-06",
            "reliability": "2026-11-06",
            "schema": "2026-11-06",
            "security": "2026-11-06",
            "transparency": "2026-11-06"
          },
          "last": "2026-11-06",
          "oldest": "2026-11-06",
          "stale": false,
          "staleAfterDays": 90
        }
      },
      "connect": {
        "http": "curl -u \"$SPYFU_API_ID:$SPYFU_SECRET_KEY\" \"https://api.spyfu.com/apis/serp_api/v2/seo/getSeoKeywords?query=example.com\""
      },
      "letme": {
        "capability": "https://letme.dev/seo.keywords",
        "tool": "https://letme.dev/spyfu"
      },
      "area": "web-data",
      "unitPrices": [
        {
          "item": "SEO research rows",
          "unit": "record",
          "usd": 0.0005,
          "note": "$0.50 per 1,000 rows"
        },
        {
          "item": "Ad history rows",
          "unit": "record",
          "usd": 0.003,
          "note": "$3.00 per 1,000 rows"
        },
        {
          "item": "Bulk domain stats rows",
          "unit": "record",
          "usd": 0.0004,
          "note": "$0.40 per 1,000 rows"
        }
      ],
      "provenance": {
        "legalEntity": "SpyFu, Inc.",
        "domain": "spyfu.com",
        "domainRegistered": "",
        "endpointOnVendorDomain": true,
        "terms": "https://www.spyfu.com/termsconditions",
        "privacy": "https://www.spyfu.com/privacypolicy",
        "statusPage": "",
        "changelog": "",
        "securityTxt": "none",
        "checked": "2026-11-06",
        "notes": [
          "Terms and conditions updated 25 February 2019, naming SpyFu, Inc. under Arizona law. They bar scraping content, automated reporting and data mining, recorded as facts; public pages were read.",
          "www.spyfu.com draws its terms and privacy pages by script and answered 403 for /pricing; the terms, privacy and disclosure pages were read through our fetch tool. robots.txt allows these paths for generic crawlers.",
          "developer.spyfu.com/robots.txt allows all but edit and login paths. /changelog answered 404.",
          "www.spyfu.com/.well-known/security.txt returned 404; status.spyfu.com did not resolve."
        ],
        "score": 53
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/spyfu.json",
      "live": {
        "slug": "spyfu",
        "probe": {
          "target": "https://api.spyfu.com/apis",
          "method": "get",
          "lastAt": "2026-11-07T19:22:35.542707675Z",
          "lastOk": true,
          "lastStatus": 403,
          "lastMs": 3314,
          "lastNote": "asks for credentials",
          "authRequired": true,
          "uptime24h": 99.05,
          "uptime30d": 99.05,
          "p50ms24h": 734,
          "p95ms24h": 3994,
          "samples24h": 210,
          "samples30d": 210,
          "days": [
            {
              "date": "2026-11-06",
              "probes": 13,
              "ok": 13
            },
            {
              "date": "2026-11-07",
              "probes": 197,
              "ok": 195
            }
          ]
        },
        "securityTxt": {
          "url": "https://spyfu.com/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-11-07T16:00:22.752070696Z"
        },
        "llmsTxt": {
          "url": "https://developer.spyfu.com/llms.txt",
          "ok": true,
          "status": 200,
          "checkedAt": "2026-11-07T15:34:01.556270301Z"
        },
        "pages": [
          {
            "url": "https://developer.spyfu.com/docs/api-pricing",
            "kind": "pricing",
            "status": 200,
            "checkedAt": "2026-11-07T14:03:21.211542645Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "f047f1c4ba95"
          },
          {
            "url": "https://www.spyfu.com/privacypolicy",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-11-07T14:35:02.32286005Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "72b0d52bf200"
          },
          {
            "url": "https://www.spyfu.com/termsconditions",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-11-07T14:35:04.716024989Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "72b0d52bf200"
          }
        ],
        "updatedAt": "2026-11-07T19:22:35.542707675Z"
      }
    },
    "edges": [
      {
        "by": 41,
        "category": "maintenance",
        "leads": "semrush",
        "name": "Maintenance \u0026 community",
        "reasons": {
          "a": "Per the 8 October check, not re-read on 4 November (hosts paused under the terms). The newest dated release note was 4 September 2026, for the Review Management reply endpoints, 61 days before this check (20). Three dated entries fall inside the 90 days from 6 August, on 19 August, 1 September and 4 September; the 15 July entry has left the window (20). A public changelog and a tech support form, with no public developer forum or issue tracker found (9). No official SDK. Semrush says its apps are in the Claude, ChatGPT and Perplexity directories (3). Doc pages carried update dates from August and September 2026 (5). Total 57.",
          "b": "Closed service. No changelog. The newest dated docs change found is 13 July 2026 (the rate-limits and pricing pages' updatedAt), 116 days before this check (10). Reference pages are dated between August 2025 and 9 July 2026, so fewer than three dated changes in 90 days (0). A help centre and support email, with no public changelog or tracker (6 of 15). No official SDK (0). No package to judge (0). 10+0+6+0+0 = 16."
        },
        "scores": {
          "a": 57,
          "b": 16
        }
      },
      {
        "by": 30,
        "category": "transparency",
        "leads": "semrush",
        "name": "Transparency \u0026 trust",
        "reasons": {
          "a": "Per the 8 October check, not re-read on 4 November (Semrush's hosts are paused under its terms). Closed service with terms updated on 25 August 2026 (re-read on 4 November, unchanged) that include API clauses on rate, caching and AI use (15). A privacy policy, a DPA, a sub-processor list and AI terms that say Semrush doesn't train models on user input. Retention is stated as long as reasonably necessary, with deletion no sooner than 30 days after termination, and the privacy policy of 13 October 2025 doesn't mention Adobe (20). Release notes mark methods deprecated on dated entries but say only that they remain operational temporarily, with no removal date or notice policy (8). Nine sub-processors listed with countries and data centres stated as in the United States. The list names Equinix where the security page names Digital Realty (16). Total 59.",
          "b": "Closed service under terms naming SpyFu, Inc., updated 25 February 2019, under Arizona law (15 of 30). The privacy policy carries no date, retention periods, controller or named processors, and says data is moved to the United States (5 of 30). No deprecation policy or notices found (0 of 20). No subprocessors named; data location is the United States (3 of 20). 15+5+0+3 = 23."
        },
        "scores": {
          "a": 68,
          "b": 38
        }
      },
      {
        "by": 12,
        "category": "ergonomics",
        "leads": "semrush",
        "name": "Agent ergonomics",
        "reasons": {
          "a": "Per the 8 October check, not re-read on 4 November (Semrush's hosts are paused under its terms). The MCP server names 14 tools, 12 for discovery plus `get_report_schema` and `execute_report`, so a report's parameters load only when asked for. 15 for 11 to 30 tools plus 7 for that on-demand design (22). Version 4 has `limit`, `offset`, `order_by`, `fields` and a `filter` language, and version 3 has `display_limit`, `display_offset`, `display_filter` and `export_columns` (20). Version 4 errors carry a request id and a retryable flag, version 3 answers with text codes, and a per-line report returns fewer lines without an error when units run short (15). Report calls are reads and empty responses cost nothing, but no idempotency key was found for Projects or Local writes and MCP annotations weren't read (12). Few required parameters and sensible defaults, with no official SDK found (8). Total 77.",
          "b": "Rows are billed, so page size controls cost; single or multiple rows per request by endpoint, and `searchType` selects analyses on one endpoint (18 of 25). Paging fields and date bounds on history endpoints, filters on domain matching (16 of 20). 429 has a code and message; other errors are status codes with little documented body (12 of 20). All GET reads, safe to retry (14 of 20). No official SDK found (5 of 15). 18+16+12+14+5 = 65."
        },
        "scores": {
          "a": 77,
          "b": 65
        }
      },
      {
        "by": 11,
        "category": "reliability",
        "leads": "spyfu",
        "name": "Reliability",
        "reasons": {
          "a": "Graded on the hosted lines for the REST APIs and the MCP server, per the 8 October check, not re-read on 4 November (Semrush's terms bar scraping its Services and related systems, so its hosts are paused). No public status page was found. None is linked from the developer docs, the home page or the security page, and status.semrush.com doesn't resolve, and on 4 November semrush.statuspage.io redirected to Statuspage's own home page (0). With no page there is no incident history to read (5). Limits are published as 10 requests a second and 10 simultaneous requests per account, with per-method limits for Listing Management (15). Version 4 documents 429 and an `error.retryable` flag, and version 3 lists `ERROR 429`, but no Retry-After header, backoff guidance or idempotency key for Projects and Local writes was found (6). The pricing page lists an Enterprise SLA without terms or a figure, and the security page cites only the infrastructure providers' 99.9 per cent target (2). Version 3 and the MCP server carry no preview label, but the version 4 Keyword and Backlinks reports the docs recommend for new work are marked Early Access (6). Total 34.",
          "b": "Hosted lines. No status page found; status.spyfu.com did not resolve and the docs link none (0). No incident history to read (5). Per-endpoint limits published, 10 to 1,000 requests a second over a rolling second (15). 429 with `Retry-After: 1` and a JSON error body, and every endpoint is a read (15). No SLA found (0). Generally available (10). 0+5+15+15+0+10 = 45."
        },
        "scores": {
          "a": 34,
          "b": 45
        }
      },
      {
        "by": 5,
        "category": "schema",
        "leads": "spyfu",
        "name": "Schema \u0026 documentation",
        "reasons": {
          "a": "Per the 8 October check, not re-read on 4 November (Semrush's hosts are paused under its terms). No OpenAPI or similar file was found on the developer site, and the guessed paths return 404. The MCP server's `get_report_schema` tool returns a report's parameters at run time, which we count as a partial contract we couldn't read without an account (8). llms.txt at the site root, for the API and for each version, though no Markdown twins of the pages (10). Each method page describes every parameter, and the API llms.txt says which API and version to pick for each task. MCP tool descriptions weren't read (14). Version 4 parameters state type, required status and allowed values such as country codes, scope and intent, while version 3 uses coded column names like Ph and Po with CSV output (10). Every method has a request example and a response sample, version 4 documents its error object and 11 status codes, and version 3 lists its numbered errors (13). Versions 3 and 4 are documented separately with dated release notes back to March 2026 (15). Total 70.",
          "b": "Every reference page embeds an OpenAPI 3.1 definition with security schemes and responses, but no single downloadable file is linked (20 of 25). llms.txt and a Markdown twin of every page (10). Descriptions say what each endpoint returns and how it differs from its neighbours ('unlike term-based endpoints...') (17 of 20). Typed parameters with descriptions, examples and required flags (12 of 15). 200, 400, 401 and 500 in the definitions and a 429 example, little on error bodies (11 of 15). v2 in every path, but no changelog (/changelog answered 404) (5 of 15). 20+10+17+12+11+5 = 75."
        },
        "scores": {
          "a": 70,
          "b": 75
        }
      }
    ],
    "facts": [
      {
        "a": "HTTP API",
        "b": "HTTP API",
        "name": "Kind"
      },
      {
        "a": "Semrush Inc. (an Adobe company)",
        "b": "SpyFu, Inc.",
        "name": "Vendor"
      },
      {
        "a": "https://api.semrush.com",
        "b": "https://api.spyfu.com/apis",
        "name": "Hosted endpoint"
      },
      {
        "a": "HTTP, Streamable HTTP",
        "b": "HTTP",
        "name": "Transports"
      },
      {
        "a": "OAuth or key",
        "b": "API key",
        "name": "Auth"
      },
      {
        "a": "Paid",
        "b": "Paid",
        "name": "Pricing"
      },
      {
        "a": "no",
        "b": "no",
        "name": "x402"
      },
      {
        "a": "Proprietary service under the Semrush terms of service",
        "b": "Proprietary, under SpyFu, Inc.'s terms and conditions",
        "name": "Licence"
      },
      {
        "a": "14",
        "b": "0",
        "name": "Tools exposed"
      },
      {
        "a": "yes",
        "b": "no",
        "name": "Read-only variant documented"
      },
      {
        "a": "yes",
        "b": "yes",
        "name": "llms.txt"
      },
      {
        "a": "2026-09-04",
        "b": "2026-07-13",
        "name": "Last release"
      },
      {
        "a": "2026-08-25",
        "b": "couldn't be read",
        "name": "Terms last updated"
      },
      {
        "a": "2025-10-13",
        "b": "couldn't be read",
        "name": "Privacy policy last updated"
      },
      {
        "a": "not found in the text",
        "b": "couldn't be read",
        "name": "Customer content may train models"
      },
      {
        "a": "yes",
        "b": "couldn't be read",
        "name": "Terms restrict automated access"
      },
      {
        "a": "yes",
        "b": "couldn't be read",
        "name": "Terms restrict benchmarking"
      },
      {
        "a": "not found in the text",
        "b": "couldn't be read",
        "name": "Terms or service can change without notice"
      },
      {
        "a": "yes",
        "b": "couldn't be read",
        "name": "Arbitration or class-action waiver"
      }
    ],
    "faq": [
      {
        "answer": "Semrush API + MCP scores 53.2 (D) on agent readiness against SpyFu API's 48.1 (D), and leads in 4 of 7 scored categories. SpyFu API leads on reliability and schema \u0026 documentation.",
        "question": "Which is better for AI agents, Semrush API + MCP or SpyFu API?"
      },
      {
        "answer": "Semrush API + MCP takes an API key or an OAuth sign-in. SpyFu API needs an API key.",
        "question": "Do Semrush API + MCP and SpyFu API need an API key?"
      },
      {
        "answer": "Yes. Semrush API + MCP has a hosted endpoint at https://api.semrush.com and SpyFu API at https://api.spyfu.com/apis.",
        "question": "Can an agent call Semrush API + MCP and SpyFu API without installing anything?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": [
          "Agent ergonomics, 77 against 65",
          "Maintenance \u0026 community, 57 against 16",
          "Transparency \u0026 trust, 68 against 38"
        ],
        "also": null,
        "goodFor": "Teams already paying for Semrush who want an agent to pull keyword, backlink, ranking and traffic estimates in one place, mainly through the MCP server.",
        "slug": "semrush",
        "watchFor": "Domain, URL, Trends, Position Tracking and Site Audit reports are version 3 only, where the one key is a URL parameter and can't be revoked"
      },
      {
        "aheadOn": [
          "Reliability, 45 against 34",
          "Schema \u0026 documentation, 75 against 70"
        ],
        "also": null,
        "goodFor": "Competitor keyword, ad history and ranking history research, with a long paid-search archive.",
        "slug": "spyfu",
        "watchFor": "API access needs a paid Pro + AI or Team plan; there is no free tier"
      }
    ],
    "history": {
      "semrush": [
        {
          "causes": [
            "evidence"
          ],
          "date": "2026-10-28",
          "delta": 0.1,
          "from": 53.1,
          "fromGrade": "D",
          "to": 53.2,
          "toGrade": "D"
        }
      ],
      "spyfu": null
    },
    "job": {
      "capability": "seo.keywords",
      "name": "Keyword data"
    },
    "others": [
      {
        "json": "https://www.anchorterminal.com/compare/ahrefs-vs-semrush.json",
        "title": "Ahrefs vs Semrush API + MCP",
        "url": "https://www.anchorterminal.com/compare/ahrefs-vs-semrush"
      },
      {
        "json": "https://www.anchorterminal.com/compare/ahrefs-vs-spyfu.json",
        "title": "Ahrefs vs SpyFu API",
        "url": "https://www.anchorterminal.com/compare/ahrefs-vs-spyfu"
      },
      {
        "json": "https://www.anchorterminal.com/compare/dataforseo-vs-semrush.json",
        "title": "DataForSEO vs Semrush API + MCP",
        "url": "https://www.anchorterminal.com/compare/dataforseo-vs-semrush"
      },
      {
        "json": "https://www.anchorterminal.com/compare/dataforseo-vs-spyfu.json",
        "title": "DataForSEO vs SpyFu API",
        "url": "https://www.anchorterminal.com/compare/dataforseo-vs-spyfu"
      },
      {
        "json": "https://www.anchorterminal.com/compare/keywords-everywhere-vs-semrush.json",
        "title": "Keywords Everywhere API + MCP vs Semrush API + MCP",
        "url": "https://www.anchorterminal.com/compare/keywords-everywhere-vs-semrush"
      },
      {
        "json": "https://www.anchorterminal.com/compare/keywords-everywhere-vs-spyfu.json",
        "title": "Keywords Everywhere API + MCP vs SpyFu API",
        "url": "https://www.anchorterminal.com/compare/keywords-everywhere-vs-spyfu"
      },
      {
        "json": "https://www.anchorterminal.com/compare/majestic-vs-spyfu.json",
        "title": "Majestic API vs SpyFu API",
        "url": "https://www.anchorterminal.com/compare/majestic-vs-spyfu"
      },
      {
        "json": "https://www.anchorterminal.com/compare/manifold-mcp-vs-semrush.json",
        "title": "Manifold vs Semrush API + MCP",
        "url": "https://www.anchorterminal.com/compare/manifold-mcp-vs-semrush"
      },
      {
        "json": "https://www.anchorterminal.com/compare/manifold-mcp-vs-spyfu.json",
        "title": "Manifold vs SpyFu API",
        "url": "https://www.anchorterminal.com/compare/manifold-mcp-vs-spyfu"
      },
      {
        "json": "https://www.anchorterminal.com/compare/moz-api-vs-semrush.json",
        "title": "Moz API vs Semrush API + MCP",
        "url": "https://www.anchorterminal.com/compare/moz-api-vs-semrush"
      },
      {
        "json": "https://www.anchorterminal.com/compare/moz-api-vs-spyfu.json",
        "title": "Moz API vs SpyFu API",
        "url": "https://www.anchorterminal.com/compare/moz-api-vs-spyfu"
      },
      {
        "json": "https://www.anchorterminal.com/compare/se-ranking-vs-semrush.json",
        "title": "SE Ranking API + MCP vs Semrush API + MCP",
        "url": "https://www.anchorterminal.com/compare/se-ranking-vs-semrush"
      },
      {
        "json": "https://www.anchorterminal.com/compare/se-ranking-vs-spyfu.json",
        "title": "SE Ranking API + MCP vs SpyFu API",
        "url": "https://www.anchorterminal.com/compare/se-ranking-vs-spyfu"
      },
      {
        "json": "https://www.anchorterminal.com/compare/semrush-vs-similarweb.json",
        "title": "Semrush API + MCP vs Similarweb",
        "url": "https://www.anchorterminal.com/compare/semrush-vs-similarweb"
      },
      {
        "json": "https://www.anchorterminal.com/compare/google-search-console-vs-semrush.json",
        "title": "Google Search Console API vs Semrush API + MCP",
        "url": "https://www.anchorterminal.com/compare/google-search-console-vs-semrush"
      },
      {
        "json": "https://www.anchorterminal.com/compare/google-search-console-vs-spyfu.json",
        "title": "Google Search Console API vs SpyFu API",
        "url": "https://www.anchorterminal.com/compare/google-search-console-vs-spyfu"
      },
      {
        "json": "https://www.anchorterminal.com/compare/majestic-vs-semrush.json",
        "title": "Majestic API vs Semrush API + MCP",
        "url": "https://www.anchorterminal.com/compare/majestic-vs-semrush"
      },
      {
        "json": "https://www.anchorterminal.com/compare/similarweb-vs-spyfu.json",
        "title": "Similarweb vs SpyFu API",
        "url": "https://www.anchorterminal.com/compare/similarweb-vs-spyfu"
      }
    ],
    "panel": null,
    "scores": [
      {
        "by": 11,
        "edge": "spyfu",
        "key": "reliability",
        "name": "Reliability",
        "semrush": 34,
        "spyfu": 45,
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "by": 5,
        "edge": "spyfu",
        "key": "schema",
        "name": "Schema \u0026 documentation",
        "semrush": 70,
        "spyfu": 75,
        "weight": 13
      },
      {
        "by": 12,
        "edge": "semrush",
        "key": "ergonomics",
        "name": "Agent ergonomics",
        "semrush": 77,
        "spyfu": 65,
        "weight": 13
      },
      {
        "by": 2,
        "edge": "semrush",
        "key": "security",
        "name": "Security \u0026 auth",
        "semrush": 54,
        "spyfu": 52,
        "weight": 14
      },
      {
        "by": 3,
        "edge": "spyfu",
        "key": "payments",
        "name": "Payments \u0026 pricing",
        "semrush": 17,
        "spyfu": 20,
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "by": 41,
        "edge": "semrush",
        "key": "maintenance",
        "name": "Maintenance \u0026 community",
        "semrush": 57,
        "spyfu": 16,
        "weight": 7
      },
      {
        "by": 30,
        "edge": "semrush",
        "key": "transparency",
        "name": "Transparency \u0026 trust",
        "semrush": 68,
        "spyfu": 38,
        "weight": 7
      }
    ],
    "summary": "Semrush API + MCP scores 53.2 (D) on agent readiness against SpyFu API's 48.1 (D), and leads in 4 of 7 scored categories. SpyFu API leads on reliability and schema \u0026 documentation. Both do keyword data.",
    "tasks": null,
    "tutorials": [],
    "verdicts": {
      "semrush": "The hosted MCP server exposes 14 tools that load a report's parameters on demand, and version 4 API keys can be read-only, time-limited and revoked. Most reports still sit in version 3, whose single key travels in the URL and can't be revoked. No status page, OpenAPI file or API unit price was found.",
      "spyfu": "Per-endpoint OpenAPI 3.1 definitions, Markdown docs with llms.txt, per-endpoint rate limits and per-row prices from $0.40 to $3 per 1,000 rows make SpyFu's API easy to plan for. Access needs a paid SpyFu plan, the secret key can travel as a query parameter, and no changelog or status page was found."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/semrush-vs-spyfu",
    "json": "https://www.anchorterminal.com/compare/semrush-vs-spyfu.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/semrush-vs-spyfu.md",
    "mcp": "https://www.anchorterminal.com/mcp",
    "slim": "https://www.anchorterminal.com/compare/semrush-vs-spyfu.min.md"
  },
  "markdown": "Semrush API + MCP scores 53.2 (D) on agent readiness against SpyFu API's 48.1 (D), and leads in 4 of 7 scored categories. SpyFu API leads on reliability and schema \u0026 documentation. Both do keyword data.\n\n- Semrush API + MCP: grade D, 53.2/100, rank #963 of 1510. Markdown https://www.anchorterminal.com/tools/semrush.md · JSON https://www.anchorterminal.com/api/v1/tools/semrush.json\n- SpyFu API: grade D, 48.1/100, rank #1135 of 1510. Markdown https://www.anchorterminal.com/tools/spyfu.md · JSON https://www.anchorterminal.com/api/v1/tools/spyfu.json\n- Best SEO and search visibility data for AI agents: https://www.anchorterminal.com/best/seo/index.md\n- All 56 seo comparisons: https://www.anchorterminal.com/compare/seo/index.md\n\n## Which one, for what\n\n### Semrush API + MCP (D)\n\nGood for: Teams already paying for Semrush who want an agent to pull keyword, backlink, ranking and traffic estimates in one place, mainly through the MCP server.\n\nAhead on:\n- Agent ergonomics, 77 against 65\n- Maintenance \u0026 community, 57 against 16\n- Transparency \u0026 trust, 68 against 38\n\nWatch for: Domain, URL, Trends, Position Tracking and Site Audit reports are version 3 only, where the one key is a URL parameter and can't be revoked\n\n### SpyFu API (D)\n\nGood for: Competitor keyword, ad history and ranking history research, with a long paid-search archive.\n\nAhead on:\n- Reliability, 45 against 34\n- Schema \u0026 documentation, 75 against 70\n\nWatch for: API access needs a paid Pro + AI or Team plan; there is no free tier\n\n\n## Why the edge\n\n### Maintenance \u0026 community: Semrush API + MCP +41\n\n- Semrush API + MCP (57): Per the 8 October check, not re-read on 4 November (hosts paused under the terms). The newest dated release note was 4 September 2026, for the Review Management reply endpoints, 61 days before this check (20). Three dated entries fall inside the 90 days from 6 August, on 19 August, 1 September and 4 September; the 15 July entry has left the window (20). A public changelog and a tech support form, with no public developer forum or issue tracker found (9). No official SDK. Semrush says its apps are in the Claude, ChatGPT and Perplexity directories (3). Doc pages carried update dates from August and September 2026 (5). Total 57.\n- SpyFu API (16): Closed service. No changelog. The newest dated docs change found is 13 July 2026 (the rate-limits and pricing pages' updatedAt), 116 days before this check (10). Reference pages are dated between August 2025 and 9 July 2026, so fewer than three dated changes in 90 days (0). A help centre and support email, with no public changelog or tracker (6 of 15). No official SDK (0). No package to judge (0). 10+0+6+0+0 = 16.\n\n### Transparency \u0026 trust: Semrush API + MCP +30\n\n- Semrush API + MCP (68): Per the 8 October check, not re-read on 4 November (Semrush's hosts are paused under its terms). Closed service with terms updated on 25 August 2026 (re-read on 4 November, unchanged) that include API clauses on rate, caching and AI use (15). A privacy policy, a DPA, a sub-processor list and AI terms that say Semrush doesn't train models on user input. Retention is stated as long as reasonably necessary, with deletion no sooner than 30 days after termination, and the privacy policy of 13 October 2025 doesn't mention Adobe (20). Release notes mark methods deprecated on dated entries but say only that they remain operational temporarily, with no removal date or notice policy (8). Nine sub-processors listed with countries and data centres stated as in the United States. The list names Equinix where the security page names Digital Realty (16). Total 59.\n- SpyFu API (38): Closed service under terms naming SpyFu, Inc., updated 25 February 2019, under Arizona law (15 of 30). The privacy policy carries no date, retention periods, controller or named processors, and says data is moved to the United States (5 of 30). No deprecation policy or notices found (0 of 20). No subprocessors named; data location is the United States (3 of 20). 15+5+0+3 = 23.\n\n### Agent ergonomics: Semrush API + MCP +12\n\n- Semrush API + MCP (77): Per the 8 October check, not re-read on 4 November (Semrush's hosts are paused under its terms). The MCP server names 14 tools, 12 for discovery plus `get_report_schema` and `execute_report`, so a report's parameters load only when asked for. 15 for 11 to 30 tools plus 7 for that on-demand design (22). Version 4 has `limit`, `offset`, `order_by`, `fields` and a `filter` language, and version 3 has `display_limit`, `display_offset`, `display_filter` and `export_columns` (20). Version 4 errors carry a request id and a retryable flag, version 3 answers with text codes, and a per-line report returns fewer lines without an error when units run short (15). Report calls are reads and empty responses cost nothing, but no idempotency key was found for Projects or Local writes and MCP annotations weren't read (12). Few required parameters and sensible defaults, with no official SDK found (8). Total 77.\n- SpyFu API (65): Rows are billed, so page size controls cost; single or multiple rows per request by endpoint, and `searchType` selects analyses on one endpoint (18 of 25). Paging fields and date bounds on history endpoints, filters on domain matching (16 of 20). 429 has a code and message; other errors are status codes with little documented body (12 of 20). All GET reads, safe to retry (14 of 20). No official SDK found (5 of 15). 18+16+12+14+5 = 65.\n\n### Reliability: SpyFu API +11\n\n- Semrush API + MCP (34): Graded on the hosted lines for the REST APIs and the MCP server, per the 8 October check, not re-read on 4 November (Semrush's terms bar scraping its Services and related systems, so its hosts are paused). No public status page was found. None is linked from the developer docs, the home page or the security page, and status.semrush.com doesn't resolve, and on 4 November semrush.statuspage.io redirected to Statuspage's own home page (0). With no page there is no incident history to read (5). Limits are published as 10 requests a second and 10 simultaneous requests per account, with per-method limits for Listing Management (15). Version 4 documents 429 and an `error.retryable` flag, and version 3 lists `ERROR 429`, but no Retry-After header, backoff guidance or idempotency key for Projects and Local writes was found (6). The pricing page lists an Enterprise SLA without terms or a figure, and the security page cites only the infrastructure providers' 99.9 per cent target (2). Version 3 and the MCP server carry no preview label, but the version 4 Keyword and Backlinks reports the docs recommend for new work are marked Early Access (6). Total 34.\n- SpyFu API (45): Hosted lines. No status page found; status.spyfu.com did not resolve and the docs link none (0). No incident history to read (5). Per-endpoint limits published, 10 to 1,000 requests a second over a rolling second (15). 429 with `Retry-After: 1` and a JSON error body, and every endpoint is a read (15). No SLA found (0). Generally available (10). 0+5+15+15+0+10 = 45.\n\n### Schema \u0026 documentation: SpyFu API +5\n\n- Semrush API + MCP (70): Per the 8 October check, not re-read on 4 November (Semrush's hosts are paused under its terms). No OpenAPI or similar file was found on the developer site, and the guessed paths return 404. The MCP server's `get_report_schema` tool returns a report's parameters at run time, which we count as a partial contract we couldn't read without an account (8). llms.txt at the site root, for the API and for each version, though no Markdown twins of the pages (10). Each method page describes every parameter, and the API llms.txt says which API and version to pick for each task. MCP tool descriptions weren't read (14). Version 4 parameters state type, required status and allowed values such as country codes, scope and intent, while version 3 uses coded column names like Ph and Po with CSV output (10). Every method has a request example and a response sample, version 4 documents its error object and 11 status codes, and version 3 lists its numbered errors (13). Versions 3 and 4 are documented separately with dated release notes back to March 2026 (15). Total 70.\n- SpyFu API (75): Every reference page embeds an OpenAPI 3.1 definition with security schemes and responses, but no single downloadable file is linked (20 of 25). llms.txt and a Markdown twin of every page (10). Descriptions say what each endpoint returns and how it differs from its neighbours ('unlike term-based endpoints...') (17 of 20). Typed parameters with descriptions, examples and required flags (12 of 15). 200, 400, 401 and 500 in the definitions and a 429 example, little on error bodies (11 of 15). v2 in every path, but no changelog (/changelog answered 404) (5 of 15). 20+10+17+12+11+5 = 75.\n\n## Score by category\n\n| Category | Weight | Semrush API + MCP | SpyFu API | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 34 | 45 | SpyFu API +11 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 70 | 75 | SpyFu API +5 |\n| Agent ergonomics | 13% (16.2 this run) | 77 | 65 | Semrush API + MCP +12 |\n| Security \u0026 auth | 14% (17.5 this run) | 54 | 52 | Semrush API + MCP +2 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 17 | 20 | SpyFu API +3 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 57 | 16 | Semrush API + MCP +41 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 68 | 38 | Semrush API + MCP +30 |\n| Negative events | ≤15 | 0 | 0 | |\n| **Total** | | **53.2 · D** | **48.1 · D** | |\n\n## Facts side by side\n\n| Fact | Semrush API + MCP | SpyFu API |\n| --- | --- | --- |\n| Kind | HTTP API | HTTP API |\n| Vendor | Semrush Inc. (an Adobe company) | SpyFu, Inc. |\n| Hosted endpoint | `https://api.semrush.com` | `https://api.spyfu.com/apis` |\n| Transports | HTTP, Streamable HTTP | HTTP |\n| Auth | OAuth or key | API key |\n| Pricing | Paid | Paid |\n| x402 | no | no |\n| Licence | Proprietary service under the Semrush terms of service | Proprietary, under SpyFu, Inc.'s terms and conditions |\n| Tools exposed | 14 | 0 |\n| Read-only variant documented | yes | no |\n| llms.txt | yes | yes |\n| Last release | 2026-09-04 | 2026-07-13 |\n| Terms last updated | 2026-08-25 | couldn't be read |\n| Privacy policy last updated | 2025-10-13 | couldn't be read |\n| Customer content may train models | not found in the text | couldn't be read |\n| Terms restrict automated access | yes | couldn't be read |\n| Terms restrict benchmarking | yes | couldn't be read |\n| Terms or service can change without notice | not found in the text | couldn't be read |\n| Arbitration or class-action waiver | yes | couldn't be read |\n\n## How the scores have moved\n\n### Semrush API + MCP\n\n- +0.1 on 28 October 2026: new evidence\n\n### SpyFu API\n\nNo score change since it was listed.\n\n## Verdicts\n\n**Semrush API + MCP.** The hosted MCP server exposes 14 tools that load a report's parameters on demand, and version 4 API keys can be read-only, time-limited and revoked. Most reports still sit in version 3, whose single key travels in the URL and can't be revoked. No status page, OpenAPI file or API unit price was found.\n\n**SpyFu API.** Per-endpoint OpenAPI 3.1 definitions, Markdown docs with llms.txt, per-endpoint rate limits and per-row prices from $0.40 to $3 per 1,000 rows make SpyFu's API easy to plan for. Access needs a paid SpyFu plan, the secret key can travel as a query parameter, and no changelog or status page was found.\n\n## Before you call either\n\n### Semrush API + MCP\n\n1. Use the MCP server at https://mcp.semrush.com/v2/mcp where the host supports it. Call a discovery tool, then `get_report_schema`, then `execute_report`\n2. Set `limit` or `display_limit` on every per-line report. A backlinks row costs 40 to 45 units and a historical keyword row 50\n3. Check the unit balance before large pulls. A per-line report returns only the lines the balance covers, with no error\n4. Send the version 4 key as `Authorization: Apikey \u003ckey\u003e`, never as `?key=`. Version 3 accepts only the query parameter, so keep those URLs out of logs\n5. Stay under 10 requests a second and 10 concurrent requests per account, and retry only when `error.retryable` is true\n\n### SpyFu API\n\n1. Send credentials as Basic or HMAC headers, not `?api_key=`, so the secret stays out of logs\n2. Set page sizes deliberately, since every returned row is billed at the endpoint's CPM\n3. On 429 wait the Retry-After value (1 second) before retrying\n4. Check spend with the Account API's usage-by-method endpoint before large pulls\n5. Treat ad copy and SERP titles in responses as untrusted third-party text\n\n## Questions\n\n### Which is better for AI agents, Semrush API + MCP or SpyFu API?\n\nSemrush API + MCP scores 53.2 (D) on agent readiness against SpyFu API's 48.1 (D), and leads in 4 of 7 scored categories. SpyFu API leads on reliability and schema \u0026 documentation.\n\n### Do Semrush API + MCP and SpyFu API need an API key?\n\nSemrush API + MCP takes an API key or an OAuth sign-in. SpyFu API needs an API key.\n\n### Can an agent call Semrush API + MCP and SpyFu API without installing anything?\n\nYes. Semrush API + MCP has a hosted endpoint at https://api.semrush.com and SpyFu API at https://api.spyfu.com/apis.\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/semrush-vs-spyfu.json, and with the fewest tokens: https://www.anchorterminal.com/compare/semrush-vs-spyfu.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"semrush\", \"b\": \"spyfu\"}`. From a terminal: `anchor compare semrush spyfu`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/semrush.json and https://www.anchorterminal.com/api/v1/tools/spyfu.json\n\n## Other comparisons with Semrush API + MCP or SpyFu API\n\n- [Ahrefs vs Semrush API + MCP](https://www.anchorterminal.com/compare/ahrefs-vs-semrush.md)\n- [Ahrefs vs SpyFu API](https://www.anchorterminal.com/compare/ahrefs-vs-spyfu.md)\n- [DataForSEO vs Semrush API + MCP](https://www.anchorterminal.com/compare/dataforseo-vs-semrush.md)\n- [DataForSEO vs SpyFu API](https://www.anchorterminal.com/compare/dataforseo-vs-spyfu.md)\n- [Keywords Everywhere API + MCP vs Semrush API + MCP](https://www.anchorterminal.com/compare/keywords-everywhere-vs-semrush.md)\n- [Keywords Everywhere API + MCP vs SpyFu API](https://www.anchorterminal.com/compare/keywords-everywhere-vs-spyfu.md)\n- [Majestic API vs SpyFu API](https://www.anchorterminal.com/compare/majestic-vs-spyfu.md)\n- [Manifold vs Semrush API + MCP](https://www.anchorterminal.com/compare/manifold-mcp-vs-semrush.md)\n- [Manifold vs SpyFu API](https://www.anchorterminal.com/compare/manifold-mcp-vs-spyfu.md)\n- [Moz API vs Semrush API + MCP](https://www.anchorterminal.com/compare/moz-api-vs-semrush.md)\n- [Moz API vs SpyFu API](https://www.anchorterminal.com/compare/moz-api-vs-spyfu.md)\n- [SE Ranking API + MCP vs Semrush API + MCP](https://www.anchorterminal.com/compare/se-ranking-vs-semrush.md)\n- [SE Ranking API + MCP vs SpyFu API](https://www.anchorterminal.com/compare/se-ranking-vs-spyfu.md)\n- [Semrush API + MCP vs Similarweb](https://www.anchorterminal.com/compare/semrush-vs-similarweb.md)\n- [Google Search Console API vs Semrush API + MCP](https://www.anchorterminal.com/compare/google-search-console-vs-semrush.md)\n- [Google Search Console API vs SpyFu API](https://www.anchorterminal.com/compare/google-search-console-vs-spyfu.md)\n- [Majestic API vs Semrush API + MCP](https://www.anchorterminal.com/compare/majestic-vs-semrush.md)\n- [Similarweb vs SpyFu API](https://www.anchorterminal.com/compare/similarweb-vs-spyfu.md)\n",
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "attributionRequired": true,
    "credit": "CC BY 4.0, credit Anchor Terminal and link the page or API address you took it from (https://www.anchorterminal.com/terms/#data)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-11-07",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.7",
    "openapi": "https://www.anchorterminal.com/openapi.json",
    "preview": false,
    "run": "2026-10-01",
    "runLabel": "October 2026 research run",
    "terms": "https://www.anchorterminal.com/terms/#data"
  },
  "page": {
    "breadcrumbs": [
      {
        "name": "Home",
        "url": "https://www.anchorterminal.com/"
      },
      {
        "name": "Compare",
        "url": "https://www.anchorterminal.com/compare/"
      },
      {
        "name": "Semrush API + MCP vs SpyFu API",
        "url": ""
      }
    ],
    "description": "Semrush scores 53.2 (D) to SpyFu's 48.1 (D) for keyword data. Prices, MCP, x402, uptime and agent notes side by side.",
    "facts": [
      "Semrush API + MCP D 53.2",
      "SpyFu API D 48.1",
      "scores"
    ],
    "h1": "Semrush API + MCP vs SpyFu API",
    "image": "https://www.anchorterminal.com/assets/og/default.png",
    "path": "/compare/semrush-vs-spyfu",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Semrush vs SpyFu for AI agents in 2026: scores and prices",
    "toc": null,
    "updated": "2026-11-07",
    "url": "https://www.anchorterminal.com/compare/semrush-vs-spyfu"
  },
  "tokens": {
    "markdown": 4100,
    "slim": 2480
  },
  "version": 1
}
