Diffbot · AsyncAPI Specification

Diffbot Webhooks

Version

View Spec View on GitHub ExtractionHarvestingScrapingWebKnowledge GraphCrawlingWeb SearchNatural LanguageEntity ResolutionAIAsyncAPIEvents

AsyncAPI Specification

Raw ↑
generated: '2026-09-06'
method: searched
source: >-
  https://www.diffbot.com/docs/crawl/create and https://www.diffbot.com/docs/bulk/create
  (the notifyWebhook parameter), plus openapi/_original/diffbot-crawl-openapi.json and
  openapi/_original/diffbot-bulk-openapi.json.
provider: Diffbot
providerId: diffbot
description: >-
  Diffbot publishes no AsyncAPI document and operates no event stream, message broker or
  subscription surface. It does have one real webhook: asynchronous Crawl and Bulk Extract
  jobs can call back a caller-supplied URL when they finish or hit a limit. That callback is
  catalogued here.
asyncapi_published: false
asyncapi_note: >-
  Searched /asyncapi.yaml, /asyncapi.json on www, api, kg and nl hosts and the diffbot GitHub
  org; none exists. Diffbot's asynchronous surfaces are poll-based job APIs plus this one
  callback, which is not an event-driven architecture. Recorded as an honest absence — no
  AsyncAPI document was generated.
webhooks:
  count: 2
  delivery: HTTP POST to a caller-supplied URL
  subscription_model: per-job parameter, not a registered subscription
  configuration:
    parameter: notifyWebhook
    set_on:
      - operationId: create-a-crawl
        spec: openapi/_original/diffbot-crawl-openapi.json
      - operationId: create-a-bulk-job
        spec: openapi/_original/diffbot-bulk-openapi.json
    note: >-
      The callback URL is supplied when the job is created. There is no webhook registration
      endpoint, no endpoint list, no per-endpoint secret, and no way to enumerate or revoke
      callbacks after the fact.
  events:
    - name: crawl.job.completed
      trigger: The crawl job completes.
      transport: HTTP POST
      headers:
        X-Crawl-Name: The job name as supplied at creation.
        X-Crawl-Status: The job's status at the time of the callback.
      payload: The job's JSON metadata (the individual job object).
      payload_note: >-
        Diffbot states explicitly that parent jobs are NOT sent in webhook POSTs — only the
        individual job object is returned.
      source: https://www.diffbot.com/docs/crawl/create
    - name: crawl.job.limit_reached
      trigger: The job hits its maxToCrawl or maxToProcess limit.
      transport: HTTP POST
      headers:
        X-Crawl-Name: The job name as supplied at creation.
        X-Crawl-Status: The job's status at the time of the callback.
      payload: The job's JSON metadata.
      source: https://www.diffbot.com/docs/crawl/create
    - name: bulk.job.completed
      trigger: The bulk extract job completes or hits its limits.
      transport: HTTP POST
      headers:
        X-Crawl-Name: The job name.
        X-Crawl-Status: The job's status.
      payload: The job's JSON metadata.
      note: >-
        Bulk shares Crawl's job-control semantics and the same notifyWebhook parameter; the
        headers are documented with the same X-Crawl-* names.
      source: https://www.diffbot.com/docs/bulk/create
  security:
    signature: false
    shared_secret: false
    replay_protection: false
    ip_allowlist_published: false
    note: >-
      No signing secret, HMAC signature header, timestamp or nonce is documented. A receiver
      cannot verify that a callback came from Diffbot, and cannot detect a replay. Recorded
      as a gap worth raising with the provider.
  retry_policy:
    published: false
    note: No delivery guarantee, retry schedule or dead-letter behaviour is documented.
polling_alternative:
  note: >-
    Because the callback is unsigned and unretried, the reliable pattern is polling the job
    status endpoints instead.
  operations:
    - manage-a-crawl-job
    - pause-delete-or-restart-a-bulk-job
    - bulkjobStatus
    - bulkjobStatusForToken
  job_status_codes: errors/diffbot-error-codes.yml

Work with this as data

Every AsyncAPI spec here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for asyncapi

4 MCP tools reach this
  • find_asyncapisBrowse and filter every AsyncAPI spec in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This AsyncAPI spec
curl "https://apis.io/api/v1/asyncapis/diffbot-webhooks"
All asyncapi
curl "https://apis.io/api/v1/asyncapis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.