{
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-10-10",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.4",
    "openapi": "https://www.anchorterminal.com/openapi.json",
    "preview": false,
    "run": "2026-10-01",
    "runLabel": "October 2026 research run"
  },
  "tool": {
    "slug": "diffbot",
    "name": "Diffbot",
    "vendor": "Diffbot Technologies Corp.",
    "vendorUrl": "https://www.diffbot.com",
    "kind": "http-api",
    "category": "web-scrapers",
    "summary": "Diffbot is a hosted set of web data APIs from Diffbot Technologies Corp. of Menlo Park, California. Its Extract API classifies a page and returns typed JSON, alongside Crawl, Web Search, Natural Language and Knowledge Graph APIs.",
    "url": "https://www.anchorterminal.com/tools/diffbot",
    "markdownUrl": "https://www.anchorterminal.com/tools/diffbot.md",
    "slimMarkdownUrl": "https://www.anchorterminal.com/tools/diffbot.min.md",
    "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/diffbot.json",
    "repo": "https://github.com/diffbot/diffbot-python",
    "license": "Proprietary service under Diffbot's Terms of Use. The Python client, the TypeScript client and the agent skills are MIT",
    "transports": [
      "http"
    ],
    "remoteUrl": "https://api.diffbot.com/v3",
    "packages": [
      {
        "registry": "pypi",
        "name": "diffbot"
      },
      {
        "registry": "npm",
        "name": "@diffbot/typescript"
      }
    ],
    "auth": "api-key",
    "authNotes": "Self-serve token from the dashboard at app.diffbot.com, sent as the `token` query parameter on Extract and Knowledge Graph calls. The official client sends it as a Bearer header to the Web Search endpoint. Tokens carry no scopes. Child tokens have the same rights as the primary token and can be created in the dashboard on the Plus plan and above, or through support. A changelog entry of 30 June 2025 is titled as adding labels and a disable switch for tokens in the dashboard.",
    "pricing": "freemium",
    "pricingNotes": "Free plan of 10,000 credits a month at 5 requests a minute, with no card, so an agent's owner can start without a contract. Startup is $299 a month for 250,000 credits with overage at $0.001 a credit, Plus $899 for 1,000,000 with overage at $0.0009 and access to Crawl, Enterprise by sales. One extracted page is 1 credit, or 2 through the data centre proxy. Whether a failed extraction uses a credit was not found (https://www.diffbot.com/pricing).",
    "priceSummary": "$1 / 1k pages",
    "where": "hosted",
    "x402": {
      "level": "no",
      "evidence": "No x402, MPP or L402 on the pricing page, the authentication and rate limit docs, the Extract OpenAPI file or the official clients (checked 2026-10-09).",
      "endpoints": []
    },
    "toolCount": null,
    "popularity": {
      "githubStars": null,
      "npmWeekly": 9,
      "pypiWeekly": 45,
      "asOf": "2026-10-09"
    },
    "docsUrl": "https://www.diffbot.com/docs/",
    "llmsTxt": "https://www.diffbot.com/llms.txt",
    "openapi": "https://www.diffbot.com/openapi/extract.json",
    "capabilities": [
      "web.extract",
      "web.scrape",
      "web.crawl",
      "scraping.proxies",
      "web.search",
      "data.knowledge",
      "data.company"
    ],
    "tags": [
      "hosted",
      "freemium",
      "free-tier",
      "no-card",
      "api-key",
      "openapi",
      "llms-txt",
      "agent-skills",
      "cli",
      "python",
      "typescript",
      "proxies",
      "knowledge-graph",
      "status-page",
      "closed-source"
    ],
    "lastRelease": "2026-06-15",
    "graded": true,
    "anchor": {
      "graded": true,
      "score": 54.3,
      "grade": "C",
      "agentReady": false,
      "rank": 687,
      "ranked": true,
      "rankOf": 950,
      "categoryRank": 12,
      "methodology": "0.4",
      "run": "2026-10-01",
      "scores": {
        "ergonomics": 63,
        "maintenance": 57,
        "payments": 40,
        "reliability": 55,
        "schema": 83,
        "security": 21,
        "transparency": 68
      },
      "pending": [
        "performance",
        "tasks"
      ],
      "breakdown": [
        {
          "key": "reliability",
          "name": "Reliability",
          "weight": 16,
          "effectiveWeight": 20,
          "score": 55,
          "points": 11,
          "reason": "Graded as a hosted API. status.diffbot.com is a Pingdom public report with 13 checks, among them Analyze API, Article API, Crawlbot and Websearch, with daily uptime for seven days and no incident notes (15 of 20). No 90-day record can be read. In the week to 9 October 2026 Analyze API shows 99.69 per cent, with 2, 11 and 17 minutes down on 4, 5 and 6 October, and Article API 5, 9 and 2 minutes on 5 to 7 October (5 of 30, the line for no readable history). Rate limits are published per plan, 5 calls a minute on Free, 5 a second on Startup and 25 a second on Plus (15). The 429 page says to pause one second and back off. No `Retry-After` header is documented, though the official client reads one (10 of 15). No SLA was found (0). The Extract APIs are at `/v3` with no beta label (10)."
        },
        {
          "key": "performance",
          "name": "Performance",
          "weight": 10,
          "effectiveWeight": 0,
          "pending": true,
          "points": 0,
          "reason": "Pending. Latency is measured per call by our probes, which haven't run yet, so this run doesn't score it. Its weight is shared across the assessed categories until the first probe window closes."
        },
        {
          "key": "schema",
          "name": "Schema \u0026 documentation",
          "weight": 13,
          "effectiveWeight": 16.25,
          "score": 83,
          "points": 13.49,
          "reason": "The Extract APIs have a public OpenAPI 3.1.0 file, version 1.1.0, with 13 operations, and the reference pages are generated from it. We read that file and one rendered page. The descriptions for Crawl, Knowledge Graph and Web Search were not read (25). llms.txt exists but is a short index with no Markdown twins of the docs pages found (5 of 10). The Analyze API page has sections on when to use it and when not to (17 of 20). Parameters are typed, `url` is the one required field and the file has 15 enums, but `fields` is a comma-separated string and the file defines no shared response schemas (10 of 15). The file carries 24 examples. It documents only 200 and 500, with separate docs pages for 401, 404, 429 and 457 (11 of 15). The path is versioned `/v3` and a dated changelog with RSS runs from 2015 to 15 June 2026 (15)."
        },
        {
          "key": "ergonomics",
          "name": "Agent ergonomics",
          "weight": 13,
          "effectiveWeight": 16.25,
          "score": 63,
          "points": 10.24,
          "reason": "Graded on the REST API, with the skills noted. `mode` limits extraction to one page type, `fields` adds optional fields and `discussion=false` drops comments, but an article response carries both `html` and `text` with no way found to drop either. The skills return Markdown by default (14 of 25). A single-URL call has no pagination. Web Search takes `size` and `maxTokens` and DQL takes `size` per the client. Crawl result paging was not read (10 of 20). Errors are JSON with `errorCode` and `error` and six docs pages. A failed extraction can arrive in a 200, and the 429 text says the site received too many requests when the cause is the caller's plan limit (12 of 20). Extract calls are GET reads and safe to retry. Whether a failed call uses a credit was not found, and there is no idempotency key for creating crawl jobs or custom APIs (12 of 20). Only `url` and `token` are required, with official Python and TypeScript clients and a CLI (15)."
        },
        {
          "key": "security",
          "name": "Security \u0026 auth",
          "weight": 14,
          "effectiveWeight": 17.5,
          "score": 21,
          "points": 3.68,
          "reason": "One token per account, sent in the URL query string as the documented and only scheme in the OpenAPI file. Tokens are revocable in the dashboard per a June 2025 changelog title, and child tokens exist on Plus and above (20 of 30, less 10 for the secret in the URL, so 10). Child tokens have the same rights as the primary one and there is no read-only mode. The skills limit the agent to the `db` binary through `allowed-tools` (5 of 20). The API returns untrusted web content and no guidance on prompt injection was found (0 of 15). The token details page shows usage activity and an Account API reports usage. No per-call log was found (6 of 15). No security.txt, security page, certification or bug bounty was found on the pages read, and the privacy policy says some API calls rely on HTTP without encryption (0 of 20)."
        },
        {
          "key": "payments",
          "name": "Payments \u0026 pricing",
          "weight": 10,
          "effectiveWeight": 12.5,
          "score": 40,
          "points": 5,
          "reason": "No x402, MPP or L402 was found (0 of 40). Plan prices, the credit cost of each action and overage per credit are public without a login (20). The Free plan has 10,000 credits a month and needs no card (20). A person signs up in a browser at app.diffbot.com to get a token (0)."
        },
        {
          "key": "tasks",
          "name": "Task success",
          "weight": 10,
          "effectiveWeight": 0,
          "pending": true,
          "points": 0,
          "reason": "Pending. Task success needs the category task suites run through each tool, which haven't run yet, so this run doesn't score it. Its weight is shared across the assessed categories until then. A data provider's data-quality score is published on its listing now and becomes half of this category when it's scored."
        },
        {
          "key": "maintenance",
          "name": "Maintenance \u0026 community",
          "weight": 7,
          "effectiveWeight": 8.75,
          "score": 57,
          "points": 4.99,
          "reason": "The official Python client was tagged v3.0.0 on 28 September 2026, eleven days before the check. The API changelog's newest entry is 15 June 2026, 116 days before the check, and recency is scored on that entry (10). Tagged releases in the last 90 days are skills v1.1.0 and v1.1.1 on 12 and 13 August and Python v3.0.0 on 28 September. The API changelog has none in that window (20). A public changelog with RSS and a support address exist. GitHub issues were not read (8 of 15 for a closed service). Python and TypeScript clients are current, but the docs name the packages `diffbot-python` and `diffbot-typescript` while the repositories publish `diffbot` and `@diffbot/typescript` (12 of 15). The Python repository tests on Python 3.9 to 3.13 and raised two dependencies for security fixes on 28 September. We did not see CI results (7 of 10)."
        },
        {
          "key": "transparency",
          "name": "Transparency \u0026 trust",
          "weight": 7,
          "effectiveWeight": 8.75,
          "score": 68,
          "points": 5.95,
          "note": "editorial 49, provenance 86",
          "reason": "A closed service under undated Terms of Use that cover the Site and the Service, cap liability at $10 and grant Diffbot a perpetual licence to process submitted queries. The clients and skills are MIT (13 of 30). The privacy policy of 29 August 2025 says query history and API calls are stored against the API key and kept no longer than necessary, with no retention period given. The GDPR and data rights page was not read (14 of 30). There is no deprecation policy. The changelog carries dated notices, such as a May 2024 entry announcing a field removal for 30 August 2024, and the terms give 14 days' notice of fee changes (8 of 20). The privacy policy names its service providers one by one, among them AWS, Stripe, Intercom, Salesforce, Slack and Amplitude, and says all are in the United States (14 of 20)."
        }
      ],
      "assessment": {
        "date": "2026-10-09",
        "basis": "public evidence",
        "confidence": "medium",
        "notes": {
          "ergonomics": "Graded on the REST API, with the skills noted. `mode` limits extraction to one page type, `fields` adds optional fields and `discussion=false` drops comments, but an article response carries both `html` and `text` with no way found to drop either. The skills return Markdown by default (14 of 25). A single-URL call has no pagination. Web Search takes `size` and `maxTokens` and DQL takes `size` per the client. Crawl result paging was not read (10 of 20). Errors are JSON with `errorCode` and `error` and six docs pages. A failed extraction can arrive in a 200, and the 429 text says the site received too many requests when the cause is the caller's plan limit (12 of 20). Extract calls are GET reads and safe to retry. Whether a failed call uses a credit was not found, and there is no idempotency key for creating crawl jobs or custom APIs (12 of 20). Only `url` and `token` are required, with official Python and TypeScript clients and a CLI (15).",
          "maintenance": "The official Python client was tagged v3.0.0 on 28 September 2026, eleven days before the check. The API changelog's newest entry is 15 June 2026, 116 days before the check, and recency is scored on that entry (10). Tagged releases in the last 90 days are skills v1.1.0 and v1.1.1 on 12 and 13 August and Python v3.0.0 on 28 September. The API changelog has none in that window (20). A public changelog with RSS and a support address exist. GitHub issues were not read (8 of 15 for a closed service). Python and TypeScript clients are current, but the docs name the packages `diffbot-python` and `diffbot-typescript` while the repositories publish `diffbot` and `@diffbot/typescript` (12 of 15). The Python repository tests on Python 3.9 to 3.13 and raised two dependencies for security fixes on 28 September. We did not see CI results (7 of 10).",
          "payments": "No x402, MPP or L402 was found (0 of 40). Plan prices, the credit cost of each action and overage per credit are public without a login (20). The Free plan has 10,000 credits a month and needs no card (20). A person signs up in a browser at app.diffbot.com to get a token (0).",
          "reliability": "Graded as a hosted API. status.diffbot.com is a Pingdom public report with 13 checks, among them Analyze API, Article API, Crawlbot and Websearch, with daily uptime for seven days and no incident notes (15 of 20). No 90-day record can be read. In the week to 9 October 2026 Analyze API shows 99.69 per cent, with 2, 11 and 17 minutes down on 4, 5 and 6 October, and Article API 5, 9 and 2 minutes on 5 to 7 October (5 of 30, the line for no readable history). Rate limits are published per plan, 5 calls a minute on Free, 5 a second on Startup and 25 a second on Plus (15). The 429 page says to pause one second and back off. No `Retry-After` header is documented, though the official client reads one (10 of 15). No SLA was found (0). The Extract APIs are at `/v3` with no beta label (10).",
          "schema": "The Extract APIs have a public OpenAPI 3.1.0 file, version 1.1.0, with 13 operations, and the reference pages are generated from it. We read that file and one rendered page. The descriptions for Crawl, Knowledge Graph and Web Search were not read (25). llms.txt exists but is a short index with no Markdown twins of the docs pages found (5 of 10). The Analyze API page has sections on when to use it and when not to (17 of 20). Parameters are typed, `url` is the one required field and the file has 15 enums, but `fields` is a comma-separated string and the file defines no shared response schemas (10 of 15). The file carries 24 examples. It documents only 200 and 500, with separate docs pages for 401, 404, 429 and 457 (11 of 15). The path is versioned `/v3` and a dated changelog with RSS runs from 2015 to 15 June 2026 (15).",
          "security": "One token per account, sent in the URL query string as the documented and only scheme in the OpenAPI file. Tokens are revocable in the dashboard per a June 2025 changelog title, and child tokens exist on Plus and above (20 of 30, less 10 for the secret in the URL, so 10). Child tokens have the same rights as the primary one and there is no read-only mode. The skills limit the agent to the `db` binary through `allowed-tools` (5 of 20). The API returns untrusted web content and no guidance on prompt injection was found (0 of 15). The token details page shows usage activity and an Account API reports usage. No per-call log was found (6 of 15). No security.txt, security page, certification or bug bounty was found on the pages read, and the privacy policy says some API calls rely on HTTP without encryption (0 of 20).",
          "transparency": "A closed service under undated Terms of Use that cover the Site and the Service, cap liability at $10 and grant Diffbot a perpetual licence to process submitted queries. The clients and skills are MIT (13 of 30). The privacy policy of 29 August 2025 says query history and API calls are stored against the API key and kept no longer than necessary, with no retention period given. The GDPR and data rights page was not read (14 of 30). There is no deprecation policy. The changelog carries dated notices, such as a May 2024 entry announcing a field removal for 30 August 2024, and the terms give 14 days' notice of fee changes (8 of 20). The privacy policy names its service providers one by one, among them AWS, Stripe, Intercom, Salesforce, Slack and Amplitude, and says all are in the United States (14 of 20)."
        },
        "sources": [
          {
            "what": "robots.txt, which allows every path",
            "url": "https://www.diffbot.com/robots.txt",
            "seen": "2026-10-09"
          },
          {
            "what": "home page and footer links",
            "url": "https://www.diffbot.com/",
            "seen": "2026-10-09"
          },
          {
            "what": "llms.txt",
            "url": "https://www.diffbot.com/llms.txt",
            "seen": "2026-10-09"
          },
          {
            "what": "sitemap, used for the list of docs pages and changelog titles",
            "url": "https://www.diffbot.com/sitemap.xml",
            "seen": "2026-10-09"
          },
          {
            "what": "plans, credits and FAQ",
            "url": "https://www.diffbot.com/pricing",
            "seen": "2026-10-09"
          },
          {
            "what": "Terms of Use",
            "url": "https://www.diffbot.com/company/terms",
            "seen": "2026-10-09"
          },
          {
            "what": "privacy policy",
            "url": "https://www.diffbot.com/company/privacy",
            "seen": "2026-10-09"
          },
          {
            "what": "rate limits",
            "url": "https://www.diffbot.com/docs/rate-limits",
            "seen": "2026-10-09"
          },
          {
            "what": "authentication",
            "url": "https://www.diffbot.com/docs/authentication",
            "seen": "2026-10-09"
          },
          {
            "what": "Analyze API reference",
            "url": "https://www.diffbot.com/docs/extract/analyze",
            "seen": "2026-10-09"
          },
          {
            "what": "Extract OpenAPI file, read as the description behind the reference pages",
            "url": "https://www.diffbot.com/openapi/extract.json",
            "seen": "2026-10-09"
          },
          {
            "what": "429 error page",
            "url": "https://www.diffbot.com/docs/extract/errors/429",
            "seen": "2026-10-09"
          },
          {
            "what": "API overview",
            "url": "https://www.diffbot.com/docs/interfaces/api",
            "seen": "2026-10-09"
          },
          {
            "what": "agent skills docs",
            "url": "https://www.diffbot.com/docs/interfaces/agent-skills",
            "seen": "2026-10-09"
          },
          {
            "what": "Python library docs",
            "url": "https://www.diffbot.com/docs/interfaces/python",
            "seen": "2026-10-09"
          },
          {
            "what": "TypeScript library docs",
            "url": "https://www.diffbot.com/docs/interfaces/typescript",
            "seen": "2026-10-09"
          },
          {
            "what": "child tokens",
            "url": "https://www.diffbot.com/docs/account-billing/multiple-tokens",
            "seen": "2026-10-09"
          },
          {
            "what": "changelog feed",
            "url": "https://www.diffbot.com/changelog/feed.xml",
            "seen": "2026-10-09"
          },
          {
            "what": "status report, no-script view",
            "url": "https://status.diffbot.com/noscript",
            "seen": "2026-10-09"
          },
          {
            "what": "Analyze API check on the status report",
            "url": "https://status.diffbot.com/622688",
            "seen": "2026-10-09"
          },
          {
            "what": "Python client source, tags, tests and README",
            "url": "https://github.com/diffbot/diffbot-python",
            "seen": "2026-10-09"
          },
          {
            "what": "TypeScript client source and README",
            "url": "https://github.com/diffbot/diffbot-typescript",
            "seen": "2026-10-09"
          },
          {
            "what": "agent skills source and tags",
            "url": "https://github.com/diffbot/diffbot-skills",
            "seen": "2026-10-09"
          },
          {
            "what": "MCP registry search for diffbot",
            "url": "https://registry.modelcontextprotocol.io/v0/servers?search=diffbot",
            "seen": "2026-10-09"
          },
          {
            "what": "PyPI downloads for diffbot",
            "url": "https://pypistats.org/api/packages/diffbot/recent",
            "seen": "2026-10-09"
          },
          {
            "what": "npm downloads for @diffbot/typescript",
            "url": "https://api.npmjs.org/downloads/point/last-week/@diffbot/typescript",
            "seen": "2026-10-09"
          },
          {
            "what": "domain registration",
            "url": "https://rdap.verisign.com/com/v1/domain/diffbot.com",
            "seen": "2026-10-09"
          }
        ],
        "openQuestions": [
          "unchecked: the docs pages for Crawl, Bulk Extract, Web Search, DQL, Enhance, Natural Language, credits, custom JavaScript, proxies and the remaining error pages. We kept to about twenty requests on www.diffbot.com, the standard files and the OpenAPI file included, which is over the brief's fifteen",
          "unchecked: the GDPR and data rights page, the cookie policy, the EEA and California privacy pages and the support page, so whether a DPA is published was not established",
          "unchecked: a 90-day incident record. The Pingdom report shows seven days",
          "unchecked: GitHub stars and issue responsiveness. api.github.com answered 403 for a rate limit",
          "unchecked: whether `diffbot-typescript`, the name in the docs, exists on npm. The repository's package is `@diffbot/typescript`, and no release tag was found in it",
          "Whether a failed or timed-out extraction uses a credit",
          "Whether JavaScript rendering and residential proxies are available. The pages read document a data centre proxy and a caller's own proxy only",
          "The terms forbid software that scrapes, spiders or crawls the Site or Service. That matters before any probe is run",
          "The lead was right on the interface. It gave the vendor as Diffbot. The legal entity is Diffbot Technologies Corp."
        ]
      },
      "negative": 0,
      "verdict": "Extract returns typed JSON for articles, products, discussions and other page types with no selectors to write, under a public OpenAPI 3.1 contract and a free plan that needs no card. The API token travels in the URL query string, tokens carry no scopes, and no security page, certification or security.txt was found.",
      "bestFor": "Agents that want typed article, product or discussion data from arbitrary pages without writing selectors, and teams that also want the Knowledge Graph.",
      "strengths": [
        "OpenAPI 3.1.0 description of the Extract APIs (version 1.1.0, 13 operations) is published at `/openapi/extract.json` and the reference pages are generated from it",
        "Free plan of 10,000 credits a month with no card, and a public credit table. One extracted page costs 1 credit, or 2 through the data centre proxy",
        "Official Python and TypeScript clients and ten agent skills, all MIT. The Python client reached 3.0.0 on 28 September 2026 with tests on Python 3.9 to 3.13",
        "Dated changelog with an RSS feed going back to 2015, and a `/v3` path for the Extract APIs",
        "The privacy policy of 29 August 2025 names each service provider, among them AWS, Stripe, Intercom and Salesforce, and says all are in the United States"
      ],
      "weaknesses": [
        "The token is sent as the `token` query parameter on Extract and Knowledge Graph calls. It is the only scheme in the OpenAPI file",
        "Child tokens have the same access rights as the primary token, and creating them needs the Plus plan ($899 a month) or a request to support",
        "No security page, certification, bug bounty or security.txt was found on the pages read. The privacy policy says some API calls rely on HTTP without encryption",
        "The status page is a Pingdom report with seven days of uptime per check and no incident notes. Analyze API shows 99.69 per cent for the week to 9 October 2026",
        "The docs give `pip install diffbot-python` and `pnpm add diffbot-typescript`, while the repositories now name the packages `diffbot` and `@diffbot/typescript`",
        "The terms grant Diffbot a perpetual, irrevocable licence to process submitted queries, cap liability at $10, and forbid software that scrapes or crawls the Site or Service. That clause matters before any probe is run"
      ],
      "agentNotes": [
        "Call `GET https://api.diffbot.com/v3/analyze?url=\u003cencoded URL\u003e\u0026token=\u003ctoken\u003e` when the page type is unknown. Use `/v3/article` or `/v3/product` to force one schema",
        "Keep the token out of logs and shared URLs. It sits in the query string, so any proxy or log that records the request URL records the token",
        "Stay under 5 calls a minute on Free, 5 a second on Startup and 25 a second on Plus. On 429 wait at least one second and back off",
        "Check a 200 response for `errorCode`. The official client raises `ExtractionError` when a 200 reports a failed extraction",
        "Set `useProxy=default` only when a site blocks the fetch. A proxied page costs 2 credits against 1",
        "Install `diffbot` from PyPI, not `diffbot-python`, which stopped at 0.3.0"
      ],
      "metrics": {
        "kind": "remote",
        "measured": false
      },
      "reviewCount": 0,
      "avgRating": 0,
      "history": [
        {
          "basis": "public evidence",
          "confidence": "medium",
          "grade": "C",
          "methodology": "0.4",
          "pending": [
            "performance",
            "tasks"
          ],
          "run": "2026-10-01",
          "runLabel": "October 2026 research run",
          "score": 54.3
        }
      ],
      "editorialScores": {
        "ergonomics": 63,
        "maintenance": 57,
        "payments": 40,
        "reliability": 55,
        "schema": 83,
        "security": 21,
        "transparency": 49
      },
      "provenanceScore": 86
    },
    "connect": {
      "install": "python3 -m pip install diffbot",
      "http": "curl --request GET \\\n  --url 'https://api.diffbot.com/v3/analyze?token=\u003cDIFFBOT_TOKEN\u003e\u0026url=https%3A%2F%2Fwww.diffbot.com%2Fdocs%2Fintroduction' \\\n  --header 'accept: application/json'",
      "claudeCode": "/plugin marketplace add diffbot/diffbot-skills\n/plugin install diffbot@diffbot-skills"
    },
    "letme": {
      "capability": "https://letme.dev/web.extract",
      "tool": "https://letme.dev/diffbot"
    },
    "notable": [
      "The Extract OpenAPI file lists 13 operations on `https://api.diffbot.com/v3`, among them `/analyze`, `/article`, `/product`, `/discussion`, `/job`, `/image`, `/video`, `/list` and `/event`, and its only security scheme is an API key named `token` in the query (https://www.diffbot.com/openapi/extract.json)",
      "One credit extracts one page, 2 through the data centre proxy. A Knowledge Graph entity export or Enhance costs 25, and a web search 1 (https://www.diffbot.com/pricing)",
      "The pricing page states 10,000 credits a month for the Free plan in the plan table and FAQ, and its calculator shows 9,500 at the default workload (https://www.diffbot.com/pricing)",
      "The PyPI package was renamed from `diffbot-python` to `diffbot` at 3.0.0 on 28 September 2026. The docs page still gives `pip install diffbot-python` (https://github.com/diffbot/diffbot-python, https://www.diffbot.com/docs/interfaces/python)",
      "The site footer, on every page read, carries a line addressed to AI models that asks them to keep previous instructions and pay the reader a compliment. We recorded it and did not act on it (https://www.diffbot.com/pricing)",
      "The terms forbid using any software to scrape, spider or crawl the Site or Service, while robots.txt allows every path. We read a small number of public pages and recorded the clause (https://www.diffbot.com/company/terms)",
      "The privacy policy says Diffbot stores each subscriber's query history and API calls against the API key, and that some API calls rely on HTTP without encryption (https://www.diffbot.com/company/privacy)",
      "The official MCP registry has one Diffbot entry, `io.github.pipeworx-io/diffbot`, published by a third party. Diffbot's own agent surface is a set of ten skills that drive its CLI (https://registry.modelcontextprotocol.io/v0/servers?search=diffbot, https://github.com/diffbot/diffbot-skills)",
      "status.diffbot.com is a Pingdom public report with 13 checks. Analyze API was down 2, 11 and 17 minutes on 4, 5 and 6 October 2026 (https://status.diffbot.com/noscript)"
    ],
    "area": "web-data",
    "details": [
      {
        "label": "Extract endpoints",
        "value": "`GET https://api.diffbot.com/v3/analyze` classifies a page and extracts it by type. `/article`, `/product`, `/discussion`, `/job`, `/image`, `/video`, `/list` and `/event` force one schema, and `/{api}` runs a custom rule set. Raw HTML or text can be sent by POST"
      },
      {
        "label": "Other APIs",
        "value": "Crawl and Bulk Extract (Plus and above), Knowledge Graph search in DQL and Enhance at `kg.diffbot.com`, Natural Language at `nl.diffbot.com`, Web Search at `llm.diffbot.com`"
      },
      {
        "label": "Plans",
        "value": "Free $0 with 10,000 credits a month. Startup $299 with 250,000 credits. Plus $899 with 1,000,000 credits, Crawl with 25 active jobs and 3 seats. Enterprise by sales. Monthly, cancel at any time"
      },
      {
        "label": "Credits",
        "value": "Extract a page 1, through the data centre proxy 2. Crawl spidering 0. Natural Language document up to 10,000 characters 1. Knowledge Graph entity export or Enhance 25, facet record or Enhance with refresh 100. Web search 1"
      },
      {
        "label": "Rate limits",
        "value": "Free 5 calls a minute, Startup 5 a second, Plus 25 a second. Free also caps Extract at 10,000 calls a month, Natural Language at 500 and DQL and Enhance at 400 entities each"
      },
      {
        "label": "Errors",
        "value": "JSON with `errorCode` and `error`. Docs pages cover 401, 404, 429, 457 and two 500 cases. The 429 page says to pause one second and back off. The OpenAPI file documents only 200 and 500"
      },
      {
        "label": "Request options",
        "value": "`mode`, `fallback`, `fields` (links, extlinks, meta, querystring, breadcrumb), `discussion`, `timeout` (default 30,000 ms), `proxy`, `proxyAuth`, `useProxy`, `callback`"
      },
      {
        "label": "Clients",
        "value": "Python `diffbot` 3.0.1 in the repository (tag v3.0.0 of 28 September 2026, Python 3.9+, sync and async, a `db` CLI) and TypeScript `@diffbot/typescript` 0.2.0 (Node 18+), both MIT"
      },
      {
        "label": "Agent skills",
        "value": "Ten skills in `diffbot/diffbot-skills` (v1.1.1 of 13 August 2026, MIT) for Claude Code, GitHub Copilot, Snowflake Cortex Code, Factory Droid and others. They call the `db` CLI and read the token from `~/.diffbot/credentials`"
      },
      {
        "label": "Status",
        "value": "status.diffbot.com, a Pingdom public report with 13 checks and seven days of daily uptime. No incident notes"
      },
      {
        "label": "Certifications",
        "value": "None found on the pages read. No security page is linked from the home page or footer"
      },
      {
        "label": "SLA",
        "value": "None found on the pricing page or in the terms. The terms disclaim uninterrupted service"
      }
    ],
    "unitPrices": [
      {
        "item": "Extracted page, Startup overage",
        "unit": "1k-pages",
        "usd": 1,
        "note": "1 credit a page at $0.001 a credit"
      },
      {
        "item": "Extracted page through the data centre proxy, Startup overage",
        "unit": "1k-pages",
        "usd": 2,
        "note": "2 credits a page"
      },
      {
        "item": "Extracted page, Plus overage",
        "unit": "1k-pages",
        "usd": 0.9,
        "note": "1 credit a page at $0.0009 a credit"
      },
      {
        "item": "Startup plan",
        "unit": "month",
        "usd": 299,
        "note": "250,000 credits, 5 requests a second"
      },
      {
        "item": "Plus plan",
        "unit": "month",
        "usd": 899,
        "note": "1,000,000 credits, 25 requests a second, Crawl"
      }
    ],
    "provenance": {
      "legalEntity": "Diffbot Technologies Corp.",
      "domain": "diffbot.com",
      "domainRegistered": "2004-08-14",
      "endpointOnVendorDomain": true,
      "terms": "https://www.diffbot.com/company/terms",
      "privacy": "https://www.diffbot.com/company/privacy",
      "statusPage": "https://status.diffbot.com",
      "changelog": "https://www.diffbot.com/changelog",
      "securityTxt": "none",
      "checked": "2026-10-09",
      "notes": [
        "The Terms of Use name Diffbot Technologies Corp. as operator and cover both the Site and the Service, defined as the service that converts a web page into entities and facts. They are the only terms the site links, carry no date, and are the document that governs the API.",
        "The privacy policy was last updated on 29 August 2025, covers visitors, subscribers and people in the index, and gives the address 333 Ravenswood Ave, Menlo Park, CA 94025.",
        "www.diffbot.com/.well-known/security.txt returned 404. No security or trust page is linked from the home page or footer.",
        "The Extract APIs answer at api.diffbot.com, the Knowledge Graph at kg.diffbot.com, Natural Language at nl.diffbot.com and Web Search at llm.diffbot.com, per the docs and the official client's defaults.",
        "RDAP at Verisign gives a registration date of 2004-08-14 for diffbot.com.",
        "robots.txt on www.diffbot.com allows every path. status.diffbot.com disallows only Alexabot."
      ],
      "score": 86,
      "checks": [
        {
          "check": "Legal entity named",
          "value": "Diffbot Technologies Corp.",
          "points": 20,
          "max": 20,
          "state": "ok"
        },
        {
          "check": "Domain age",
          "value": "diffbot.com, registered 2004-08-14 (22 years)",
          "points": 15,
          "max": 15,
          "state": "ok"
        },
        {
          "check": "Endpoint on the vendor's domain",
          "value": "api.diffbot.com",
          "points": 15,
          "max": 15,
          "state": "ok"
        },
        {
          "check": "Terms of service",
          "value": "read, states 5 of the 7 things a reader expects, and has 1 clause that costs points",
          "points": 6.3,
          "max": 10,
          "state": "part"
        },
        {
          "check": "Privacy policy",
          "value": "read, states 8 of the 8 things a reader expects",
          "points": 10,
          "max": 10,
          "state": "ok"
        },
        {
          "check": "Status page",
          "value": "status.diffbot.com",
          "points": 10,
          "max": 10,
          "state": "ok"
        },
        {
          "check": "Changelog",
          "value": "published",
          "points": 10,
          "max": 10,
          "state": "ok"
        },
        {
          "check": "security.txt",
          "value": "not found",
          "points": 0,
          "max": 10,
          "state": "no"
        }
      ],
      "policies": [
        {
          "kind": "terms",
          "url": "https://www.diffbot.com/company/terms",
          "state": "read",
          "readAt": "2026-10-09",
          "words": 2045,
          "points": 6.3,
          "max": 10,
          "expected": [
            {
              "key": "terms.date",
              "label": "Gives the date it was last updated",
              "found": false
            },
            {
              "key": "terms.law",
              "label": "Names the governing law or courts",
              "found": true,
              "quote": "These Terms and your use of the Site and Service are governed by the federal laws of the United States of America and the laws of the State of California, without regard to conflict of law provisions.",
              "says": "The law of the United States of America"
            },
            {
              "key": "terms.liability",
              "label": "States a limit on its liability",
              "found": true,
              "quote": "IN NO EVENT WILL COMPANY’S LIABILITY TO YOU EXCEED $10.",
              "says": "Capped at $10"
            },
            {
              "key": "terms.termination",
              "label": "Says how the agreement or account can be ended",
              "found": true,
              "quote": "We may terminate your access to the Service for any reason, at our sole discretion"
            },
            {
              "key": "terms.changes",
              "label": "Says how changes to the terms are announced",
              "found": true,
              "quote": "No purported waiver or modification of these Terms by the Company via telephonic or email communications shall be valid.",
              "says": "Says it gives notice of a change"
            },
            {
              "key": "terms.use",
              "label": "Lists what users may not do",
              "found": true,
              "quote": "If you don’t agree to these Terms, you may not access or use the Site or Service."
            },
            {
              "key": "terms.sla",
              "label": "Refers to a service level or uptime commitment",
              "found": false
            }
          ],
          "toKnow": [
            {
              "key": "terms.automated",
              "label": "Restricts automated access",
              "found": true,
              "quote": "• bypass any robot exclusion headers or other measures we take to restrict access to the Site or Service or use any software, technology, or device to scrape, spider, or crawl the Site or Service or harvest or manipulate data;",
              "costsPoints": true
            },
            {
              "key": "terms.cutoff",
              "label": "Says access can be ended without notice or for any reason",
              "found": true,
              "quote": "We may terminate your access to the Service for any reason, at our sole discretion"
            },
            {
              "key": "terms.arbitration",
              "label": "Requires arbitration or waives class actions",
              "found": true,
              "quote": "You agree to resolve any claims relating to these Terms or the Site or Service through final and binding arbitration."
            }
          ],
          "notes": [
            {
              "date": "2026-10-08",
              "text": "Liability to the customer is capped at 10 US dollars.",
              "quote": "IN NO EVENT WILL COMPANY’S LIABILITY TO YOU EXCEED $10."
            },
            {
              "date": "2026-10-08",
              "text": "The customer grants Diffbot an irrevocable, perpetual licence to reproduce, distribute, disclose and otherwise use its submitted queries and data enhance requests.",
              "quote": "worldwide license to “process” (meaning to perform any activity, including reproduce, distribute, publicly display and perform, prepare derivative works of, incorporate into other works, disclose, and otherwise use) your user-submitted queries or data enhance requests."
            },
            {
              "date": "2026-10-08",
              "text": "A customer who brings a legal action against Diffbot and does not prevail must reimburse Diffbot's costs and attorneys' fees.",
              "quote": "If you attempt to bring any legal action against the Company based in any way on its Site or Service you agree that, in the event you do not prevail or the Company does prevail, you will reimburse the Company for any costs and attorneys’ fees associated with its defense of the action."
            }
          ]
        },
        {
          "kind": "privacy",
          "url": "https://www.diffbot.com/company/privacy",
          "state": "read",
          "readAt": "2026-10-09",
          "statedDate": "2025-08-29",
          "words": 4689,
          "points": 10,
          "max": 10,
          "expected": [
            {
              "key": "privacy.date",
              "label": "Gives the date it was last updated",
              "found": true,
              "quote": "Last Updated: August 29, 2025",
              "says": "Last updated 2025-08-29"
            },
            {
              "key": "privacy.collected",
              "label": "Says what personal data is collected",
              "found": true,
              "quote": "This Privacy Policy explains how we collect and use the personal data of “Visitors” to our site (people who visit our site), of “Subscribers” (users of our Services) and of “Search Subjects” (people who have published personal data about themselves to publicly available web sites and web services on the Internet which…"
            },
            {
              "key": "privacy.retention",
              "label": "Says how long data is kept",
              "found": true,
              "quote": "…the purposes set out in this privacy notice and to fulfill our legal obligations, but not longer than 30 days after we become aware that you wish to stop receiving communications or sharing your data and have verified your identity.",
              "says": "Names a period of 30 days"
            },
            {
              "key": "privacy.processors",
              "label": "Says who else receives the data",
              "found": true,
              "quote": "In order to collect Tracking Information, make your use of the Site and Service more efficient and responsive to your needs, Diffbot and its cookie service providers, detailed in the Cookie Policy, store cookies on your computer."
            },
            {
              "key": "privacy.sale",
              "label": "Says whether personal data is sold or shared for advertising",
              "found": true,
              "quote": "We will not sell, rent, or share your personal data with third parties outside of Diffbot without your consent, except in the following ways:",
              "says": "Says it does not sell personal data"
            },
            {
              "key": "privacy.rights",
              "label": "Says what rights people have over their data",
              "found": true,
              "quote": "You can exercise your data subject rights by emailing our Data Protection Officer at privacy@diffbot.com."
            },
            {
              "key": "privacy.contact",
              "label": "Gives a privacy contact",
              "found": true,
              "quote": "If you’d like to remove your Personal Data from our knowledge graph index, please email privacy@diffbot.com.",
              "says": "privacy@diffbot.com"
            },
            {
              "key": "privacy.transfers",
              "label": "Says where data is transferred or stored",
              "found": true,
              "quote": "…adoption of applicable Standard Model Clauses, and/or ensuring they have self-certified under the Data Privacy Framework (https://www.dataprivacyframework.gov/), since all of our service providers are in the United States.",
              "says": "Relies on the Data Privacy Framework"
            }
          ],
          "notes": [
            {
              "date": "2026-10-08",
              "text": "Diffbot says it encrypts personal data in transit with HTTPS, except for API calls made over HTTP.",
              "quote": "SSL encryption (https) everywhere where we deal with personal data except API calls that rely on http without encryption."
            }
          ]
        }
      ]
    },
    "pageJsonUrl": "https://www.anchorterminal.com/tools/diffbot.json",
    "live": {
      "slug": "diffbot",
      "probe": {
        "target": "https://api.diffbot.com/v3",
        "method": "get",
        "lastAt": "2026-10-10T01:37:49.938297265Z",
        "lastOk": true,
        "lastStatus": 401,
        "lastMs": 440,
        "lastNote": "asks for credentials",
        "authRequired": true,
        "uptime24h": 100,
        "uptime30d": 100,
        "p50ms24h": 424,
        "p95ms24h": 483,
        "samples24h": 102,
        "samples30d": 102,
        "days": [
          {
            "date": "2026-10-09",
            "probes": 85,
            "ok": 85
          },
          {
            "date": "2026-10-10",
            "probes": 17,
            "ok": 17
          }
        ]
      },
      "vendorStatus": {
        "page": "https://status.diffbot.com",
        "indicator": "unknown",
        "summary": "no machine-readable status found",
        "checkedAt": "2026-10-10T00:50:26.061054869Z"
      },
      "versions": [
        {
          "registry": "github",
          "name": "diffbot/diffbot-python",
          "version": "v3.0.0",
          "released": "2026-09-28",
          "seenAt": "2026-10-09T16:49:48.055113016Z"
        },
        {
          "registry": "npm",
          "name": "@diffbot/typescript",
          "version": "0.2.0",
          "seenAt": "2026-10-09T16:49:47.576544434Z"
        },
        {
          "registry": "pypi",
          "name": "diffbot",
          "version": "3.0.0",
          "released": "2026-09-28",
          "seenAt": "2026-10-09T16:49:47.362980242Z"
        }
      ],
      "githubStars": 125,
      "npmWeekly": 9,
      "pypiWeekly": 45,
      "pages": [
        {
          "url": "https://www.diffbot.com/changelog",
          "kind": "changelog",
          "status": 200,
          "checkedAt": "2026-10-09T18:49:32.449062952Z",
          "changedAt": "0001-01-01T00:00:00Z",
          "fingerprint": "68b5306eaa9b"
        },
        {
          "url": "https://www.diffbot.com/pricing",
          "kind": "pricing",
          "status": 200,
          "checkedAt": "2026-10-09T18:49:39.088815002Z",
          "changedAt": "0001-01-01T00:00:00Z",
          "fingerprint": "86884503041e"
        },
        {
          "url": "https://www.diffbot.com/company/privacy",
          "kind": "privacy",
          "status": 200,
          "checkedAt": "2026-10-09T18:49:35.06707487Z",
          "changedAt": "0001-01-01T00:00:00Z",
          "fingerprint": "fb97996581b3"
        },
        {
          "url": "https://www.diffbot.com/company/terms",
          "kind": "terms",
          "status": 200,
          "checkedAt": "2026-10-09T18:49:36.709393592Z",
          "changedAt": "0001-01-01T00:00:00Z",
          "fingerprint": "a76686da1f94"
        }
      ],
      "updatedAt": "2026-10-10T01:37:49.938297265Z"
    }
  }
}
