Skip to content
TEXT → ENTITIESDISCOVERED URLSWeb Search Crawl Extract Knowledge Graph Natural Language
Diffbot's technology stack autonomously crawls and structures all of the world's knowledge.

Technology

The stack that structures the world

Diffbot designs and researches machine learning services that work together to structure all of human knowledge. Many of these services are exposed as public endpoints for anyone to use.

01 A wild URL appears

Rendering

A URL arrives — requested by you, or discovered by one of Diffbot's global crawlers. The rendering engine then fetches, renders, and annotates raw HTML to make a web page legible to downstream services.

How it’s built

  1. 01

    Fetch

    In exchange for a URL and some TLS packets of affirmation, a web server returns HTML.

  2. 02

    Render

    Fetched HTML is rendered in a custom Chromium build, partially. Instead of loading all resources as requested, a model prioritizes just the resources needed to faithfully render the essential content of the page. Low priority resources, such as ad trackers, tracking scripts, and animations are dropped. Partial rendering reduces latency by several orders of magnitude and allows Diffbot to operate structured extraction at web scale. ↗ US Patent 9,678,928

  3. 03

    Annotate

    Every essential element in the HTML source is annotated with a dump of its low-level features: rendered pixels at every position, fonts, styles and layout, the DOM, the HTTP conversation and every dependent resource, even the state of the JavaScript VM and the CSS layout engine. Annotated features make it possible for Extract to classify and structure facts from unstructured HTML.

Go to

Custom JavaScriptCustom HeadersUsing Proxies

02 Signal from noise

Extract

The beating heart of Diffbot's engine. Extraction takes an annotated page, classifies it into a standard type, then attempts to extract a schema of that type.

Page types

type:articletype:producttype:discussiontype:imagetype:videotype:eventtype:jobtype:list

How it’s built

  1. 01

    Classify

    98% of the public web can be classified into one of roughly 20 standard page types, including article, product, discussion, image, video, event, job, lists, and more. Classification, exposed as the Analyze API, classifies and extracts a page in a single request. → Analyze API

  2. 02

    Extract fields

    Once a page is classified, it can be automatically extracted following a standard ontology. Text, visual layout, DOM, and render state features define semantic regions where fields (like product name, price, or author) are expected to exist. Once found, these values are normalized — units to metric, categories to a taxonomy. Finally, large textual regions are handed to the Natural Language service for further entity, relationship, and sentiment resolution. → Ontology

  3. 03

    Custom Rules

    For cases when the standard ontology does not cover a field you need, Extract can be extended with traditional CSS selector rules. → Custom API

Extract a page

Classify and extract structured, opinionated JSON from a single URL without hallucinations. (Surprise! It's not an LLM)

03 Scaling up

Bulk & Crawl

Twin async services that scale Extract across the global public web. Bulk extracts a static set of URLs. Crawl spiders a set of seed URLs for links to extract. These extracted links become a new set of URLs to spider. The recursive flow continues until all links are found, or a stop pattern is reached.

Go to

Bulk Extract APICrawl APICrawl PatternsSearch Crawl Data

Crawl every page

Walk an entire site from a single seed URL and extract thousands of pages into a single structured dataset.

04 Crawling the public web

Global Index

Diffbot has maintained a whole web crawl for over 20 years and is one of the last remaining independent web crawlers of that era. Built on C++, the Global Index doesn't just crawl, but also revisits pages on a freshness policy set per page type. Sharded across hundreds of SSDs, the Global Index is a holding lobby representing all of the public web to be further structured into consumable services like Web Search and the Knowledge Graph.

Go to

Web SearchKnowledge Graph

05 Resolving Entities

Natural Language

Some of the most critical factual information on the web lives not in selectable HTML elements but deep within unstructured plain text. By resolving entities, relationships, coreferences, salience, and sentiment, Natural Language is able to programmatically decipher M&A deals, executive changes, new product launches, and even more market signals within milliseconds — much faster and more consistently than an LLM.

06 Structuring the public web

Knowledge Graph®

Armed with a bag of facts extracted from billions of pages in every language, we can now build a Knowledge Graph. This requires multiple passes of inference, record linking, relationship extraction, and knowledge fusion. A full build is completed every 4-5 days.

How it’s built

  1. 01

    Record Linking

    Diffbot might exist as a single entity, but we exist on the web across thousands of documents — directory listings, a LinkedIn profile, a Wikipedia page, this website! Record and entity linking models cluster extractions that refer to the same entity, score the cluster into one record, and (if one exists) links them to an existing node in the Knowledge Graph. The result of this step are the nodes of the Knowledge Graph.

  2. 02

    Relationship extraction

    Nodes in the Knowledge Graph are linked together by relationships, also known as the edges of a graph. Edges in the KG are common sense facts that connect two entities together, such as the relationship between a parent and child, or a company and its location. Qualifiers for each edge (e.g. current or past) are also included at this step. This is one of the most difficult steps in building a KG that represents all of human knowledge. ↗ KnowledgeNet, EMNLP 2019

  3. 03

    Knowledge fusion

    Given a cluster of candidate facts about an entity, some will inevitably conflict, or represent stale information. Knowledge fusion reconciles these facts by evaluating truthfulness, trustworthiness of its source, and current established facts.

Go to

Search (DQL) APIEnhance APIOntology

Query the Knowledge Graph

Run structured queries against the world's largest Knowledge Graph of the public web for companies, people, news, and more.

08 Research as a service

Diffbot LLM

Large language models fine tuned for zero hallucination tolerance web research. Unlike most commercial frontier models, Diffbot LLM attempts to use every web access tool at its disposal (particularly Diffbot API) to ground every response on live public sources. Weights are open and available on Hugging Face.

Go to

Diffbot LLM on Hugging FaceDiffy Chat

09 Infrastructure

Served on bare metal

Diffbot’s first server cost about $400 and came off a pallet. That one box grew into rows of Diffbot’s own cabinets in a California datacenter — a hardware setup designed for crawling, rendering and extraction at web scale. Everything from the low-level vertical stack to production public APIs are served from these owned cabinets.

Datacenter
Owned cabinets, California
Hardware
Assembled in-house, per task
Storage
SSD-dense index shards
Network
Direct P2P links between graph builders
Code
Rust / C++ / Java
Browser
Custom Chromium build
  1. An open server chassis on a table: a row of fans, banks of memory and a large heatsink being fitted.
    BuildServers assembled in the office
  2. A hand truck stacked with finished rack servers being wheeled down a hallway.
    RollDown the road to the datacenter
  3. The inside of a blue cabinet: servers racked and cabled.
    RackInto Diffbot’s own cabinets
  4. Long rows of blue cabinets under cable trays in a datacenter hall.
    RunRows of cabinets, California

Test Drive our APIs

No token required