Diffbot Python Library
Python client library for Diffbot APIs.
Installation
Install the standalone CLI binary for agentic use:
curl -fsSL https://raw.githubusercontent.com/diffbot/diffbot-python/main/install.sh | sh
If you prefer, the full Python library can also be installed with pip:
python3 -m pip install diffbot-python
For local development:
pip install -e ".[dev]"
Usage
Authentication
The CLI and the library can share a single credential. The token always has to be
passed to the client explicitly, but resolve_token() gives you the same lookup the
CLI uses, in this order:
- An explicit token passed to
resolve_token(token). - The
DIFFBOT_API_TOKENenvironment variable. - A
DIFFBOT_API_TOKEN=...line in~/.diffbot/credentials.
Set it once and it works for both the CLI and your scripts. Either export it:
export DIFFBOT_API_TOKEN=<TOKEN>
…or write it to the shared credentials file (handy for keeping it out of your shell environment):
mkdir -p ~/.diffbot
printf 'DIFFBOT_API_TOKEN=%s\n' '<TOKEN>' > ~/.diffbot/credentials
chmod 600 ~/.diffbot/credentials
With either in place, resolve the token and pass it to the client:
from diffbot import Diffbot, resolve_token
db = Diffbot(token=resolve_token()) # from env var or ~/.diffbot/credentials
data = db.extract("https://www.example.com")
Extract structured content
from diffbot import Diffbot
db = Diffbot(token="YOUR_TOKEN")
data = db.extract("https://www.example.com")
Ask Diffbot LLM
from diffbot import Diffbot
db = Diffbot(token="YOUR_TOKEN")
for chunk in db.ask([{"role": "user", "content": "What's the capital of France?"}]):
print(chunk, end="")
Crawl a site for structured content
from diffbot import Diffbot
db = Diffbot(token="YOUR_TOKEN")
for event in db.crawl("https://www.example.com", hops=1):
print(event)
Query the Knowledge Graph
from diffbot import Diffbot
db = Diffbot(token="YOUR_TOKEN")
results = db.dql('type:Organization name:"Diffbot"')
Web Search
from diffbot import Diffbot
db = Diffbot(token="YOUR_TOKEN")
results = db.web_search("diffbot knowledge graph")
for r in results["search_results"]:
print(r["score"], r["title"], r["pageUrl"])
print(r["content"])
Entities (NLP)
from diffbot import Diffbot
db = Diffbot(token="YOUR_TOKEN")
result = db.entities("Apple CEO Tim Cook announced record quarterly earnings.")
for entity in result["entities"]:
print(entity["name"], entity.get("type"), entity.get("id"))
print("sentiment:", result.get("sentiment"))
Async Usage
Extract structured content
import asyncio
from diffbot import DiffbotAsync
async def main():
async with DiffbotAsync(token="YOUR_TOKEN") as db:
data = await db.extract("https://www.example.com")
print(data)
asyncio.run(main())
Ask Diffbot LLM
import asyncio
from diffbot import DiffbotAsync
async def main():
async with DiffbotAsync(token="YOUR_TOKEN") as db:
async for chunk in db.ask([{"role": "user", "content": "What's the capital of France?"}]):
print(chunk, end="")
asyncio.run(main())
Crawl a site for structured content
import asyncio
from diffbot import DiffbotAsync
async def main():
async with DiffbotAsync(token="YOUR_TOKEN") as db:
async for event in db.crawl("https://www.example.com", hops=1):
print(event)
asyncio.run(main())
Query the Knowledge Graph
import asyncio
from diffbot import DiffbotAsync
async def main():
async with DiffbotAsync(token="YOUR_TOKEN") as db:
results = await db.dql('type:Organization name:"Diffbot"')
print(results)
asyncio.run(main())
Web Search
import asyncio
from diffbot import DiffbotAsync
async def main():
async with DiffbotAsync(token="YOUR_TOKEN") as db:
results = await db.web_search("diffbot knowledge graph")
for r in results["search_results"]:
print(r["score"], r["title"], r["pageUrl"])
print(r["content"])
asyncio.run(main())
Entities (NLP)
import asyncio
from diffbot import DiffbotAsync
async def main():
async with DiffbotAsync(token="YOUR_TOKEN") as db:
result = await db.entities("Apple CEO Tim Cook announced record quarterly earnings.")
for entity in result["entities"]:
print(entity["name"], entity.get("type"), entity.get("id"))
print("sentiment:", result.get("sentiment"))
asyncio.run(main())
CLI
This library also includes a CLI exposed as the db command.
To make db available from anywhere, install it as an isolated tool with uv:
uv tool install .
This drops a db executable into ~/.local/bin (ensure it is on your PATH). Use --force to reinstall or upgrade after changes, or --editable to have source edits take effect immediately. Alternatively, a plain pip install . (or pip install -e .) also installs the db entry point into the active environment.
Standalone binary
Every release also ships a self-contained db binary for Linux (x86_64 and aarch64) and macOS (Apple Silicon) as a Python-free option. The installer detects your platform, verifies the SHA256 checksum, and installs (or upgrades) db into ~/.local/bin:
curl -fsSL https://raw.githubusercontent.com/diffbot/diffbot-python/main/install.sh | sh
Pin a specific release or install location with flags (or the DB_VERSION / DB_INSTALL_DIR environment variables); re-running the installer upgrades an existing install in place:
curl -fsSL https://raw.githubusercontent.com/diffbot/diffbot-python/main/install.sh | sh -s -- --version v0.2.1 --bin-dir ~/bin
How to use
export DIFFBOT_API_TOKEN=your-token-here
db extract https://www.example.com
db ask "What's the capital of France?"
db crawl https://www.example.com --hops 1
db crawl-list-jobs
db crawl-delete-job crawl-1234567890
db web-search "diffbot knowledge graph"
db web-search "diffbot knowledge graph" -n 5 -f json
db entities "Apple CEO Tim Cook announced record quarterly earnings."
db entities "Apple CEO Tim Cook announced record quarterly earnings." -f dql
How to use with an agent
Once installed, this library will work alongside diffbot-skills to enable your agent full access to structuring web knowledge with Diffbot. Diffbot Agent Skills even unlocks some additional skills like crafting DQL from natural language.
diffbot-skills will pick up or install this library automatically.
Tests
Run the mock test suite:
python -m pytest
Run live integration tests against the real API (requires a valid token).
The token is resolved the same way as everywhere else — the DIFFBOT_API_TOKEN
environment variable or ~/.diffbot/credentials:
DIFFBOT_API_TOKEN=your_token python -m pytest -m live
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file diffbot_python-0.2.3.tar.gz.
File metadata
- Download URL: diffbot_python-0.2.3.tar.gz
- Upload date:
- Size: 26.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
uv/0.11.0 {"installer":{"name":"uv","version":"0.11.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
75fd3a439231f22956610c8bb01df54c8166b8decd383ca95afb77433e0bbb2b
|
|
| MD5 |
465c1fc6c065068843a5517289cd8029
|
|
| BLAKE2b-256 |
ba2bf17a69c9c03bd52dcbd416fe5390275c652d649853754d99d45b0a509440
|
File details
Details for the file diffbot_python-0.2.3-py3-none-any.whl.
File metadata
- Download URL: diffbot_python-0.2.3-py3-none-any.whl
- Upload date:
- Size: 29.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
uv/0.11.0 {"installer":{"name":"uv","version":"0.11.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
96719b6136e6af181c8198a58c3cc49fa45dc92f39adecfcf2e543e42a854c34
|
|
| MD5 |
4f9c2c9b47c433c05ba5a136c19a0d53
|
|
| BLAKE2b-256 |
2b4a64388b861cf89b2a2cdc50fc4810bf8605e079fa50465d6c54b1d84deacb
|