Quickstart
Five minutes from a fresh API key to your first dataset and mentions list — in Python.
Spin up your first dataset in five minutes. By the end you'll have an API key, a dataset populated with real social-media posts, and a list of mentions you can work with.
This guide uses Python with httpx. The same calls work from any
language — pick the request library you prefer. Every example URL,
header, and body shape is identical.
Prerequisites
- A buzzabout account (sign up — the free tier is enough for this walkthrough).
- Python 3.10+ and
httpx(pip install httpx).
Want your coding agent to do this for you?
Paste this whole page (or https://docs.buzzabout.ai/llms-full.txt)
into Claude Code, Cursor, or any coding assistant and ask it to wire
buzzabout into your project. The docs are written to be agent-readable.
Walkthrough
Get an API key
Open Settings → API keys in the web app and click New key. Copy
the value (it starts with bz_live_) somewhere safe — you'll see it
once.
export BUZZABOUT_KEY="bz_live_abcdef1234567890abcdef1234567890"The raw key is never stored
buzzabout only stores the SHA-256 digest of your key, not the key itself. Once you close the "New key" dialog the raw value is gone — if you lose it, mint a new one. See authentication for the full lifecycle.
Using an LLM client?
If you're integrating buzzabout with Claude, Cursor, ChatGPT, or another assistant instead of calling the API yourself, skip ahead to Use in your agent. You'll wire the buzzabout MCP server into your assistant and let it drive the same workflow.
Set up the client
A tiny helper to keep the rest of the code clean:
import os
import time
import httpx
BUZZABOUT_KEY = os.environ["BUZZABOUT_KEY"]
BASE_URL = "https://api.buzzabout.ai"
client = httpx.Client(
base_url=BASE_URL,
headers={"x-api-key": BUZZABOUT_KEY},
timeout=30.0,
)Create a dataset
A dataset is a named container for the mentions you'll collect.
response = client.post("/v1/datasets", json={"name": "cold brew"})
response.raise_for_status()
dataset = response.json()["data"]
dataset_id = dataset["id"]
print(f"Created dataset {dataset_id}: {dataset['name']}"){
"status": "success",
"data": {
"id": "ds_2NK4Y3JxhJ8r9c0Y1u5lkjm9Wb1",
"name": "cold brew",
"created_at": "2026-05-01T12:00:00Z"
}
}Trigger a dataset run
A run is what actually collects posts from social platforms. The
call is asynchronous — it returns 202 Accepted immediately with a run
in pending state.
response = client.post(
f"/v1/datasets/{dataset_id}/runs",
json={
"search_query": {
"type": "prompt",
"sources": ["reddit", "tiktok"],
"search_query": "cold brew coffee",
},
"count": 200,
},
)
response.raise_for_status()
run = response.json()["data"]
run_id = run["id"]
print(f"Queued run {run_id} — status: {run['status']['type']}"){
"status": "success",
"data": {
"id": "dr_2NK4ZG2BqkAxK1nT0RZyZbBmZHN",
"dataset_id": "ds_2NK4Y3JxhJ8r9c0Y1u5lkjm9Wb1",
"status": { "type": "pending", "steps": [] },
"created_at": "2026-05-01T12:00:30Z"
}
}Poll until completed
while True:
response = client.get(f"/v1/datasets/{dataset_id}/runs/{run_id}")
response.raise_for_status()
status = response.json()["data"]["status"]["type"]
print(f" status: {status}")
if status in ("completed", "failed"):
break
time.sleep(10)A 200-post run typically takes 1–3 minutes.
{
"status": "success",
"data": {
"id": "dr_2NK4ZG2BqkAxK1nT0RZyZbBmZHN",
"dataset_id": "ds_2NK4Y3JxhJ8r9c0Y1u5lkjm9Wb1",
"status": {
"type": "completed",
"steps": [
{ "name": "scraping", "completed_at": 1714564890 },
{ "name": "analysis", "completed_at": 1714565010 }
]
},
"mentions_count": 200,
"created_at": "2026-05-01T12:00:30Z",
"updated_at": "2026-05-01T12:03:30Z"
}
}List mentions
Mentions are global — POST /v1/mentions returns all the mentions
across every dataset you own. Pass dataset_ids to scope the search.
response = client.post(
"/v1/mentions",
json={
"dataset_ids": [dataset_id],
"limit": 5,
"sort": "engagement_rate",
"order": "desc",
},
)
response.raise_for_status()
mentions = response.json()["data"]
for m in mentions:
print(f" {m['source']:9} {m['num_likes']:6,} likes {m['url']}"){
"status": "success",
"data": [
{
"source": "reddit",
"id": "t3_1oqliu8",
"author": {
"title": "u/sipdaily",
"url": "https://www.reddit.com/user/sipdaily/",
"follower_count": 1240
},
"text": "Nobody tells you that nitro cold brew tastes...",
"url": "https://www.reddit.com/r/coffee/comments/1oqliu8/",
"num_views": 12400,
"num_likes": 248,
"engagement_rate": "0.020",
"datasets": [
{ "id": "ds_2NK4Y3JxhJ8r9c0Y1u5lkjm9Wb1", "name": "cold brew" }
]
}
],
"has_next": true,
"cursor": "eyJzb3J0X3ZhbHVlIjogIjAuMDIwIiwgImlkIjogInQzXzFvcWxpdTgifQ=="
}Next steps
- Run your first analysis — end-to-end walkthrough including audience scraping and the AI assistant.
- MCP overview — drive the same workflow from an MCP-capable assistant (Claude, Cursor, ChatGPT, your own SDK).
- API / Datasets — the full reference for the calls we just made.