Get started
Quickstart
From signup to your first search result in five minutes.
Go from a fresh account to real search results in your terminal. By the end you'll have a working request to paste into your own code, and you'll know what the important fields in the response mean.
Get started#
- Sign up and activate the platform
Create an account at the dashboard (
https://dashboard.sproutsdata.ai/). Signup requires a business email address; you set your password from the emailed activation link. On your first sign-in you'll be asked to activate the Data Platform for your organization — activation issues your 1,000 free starting credits, which expire 90 days after they're granted.If you already have a Sprouts account from another product, sign in with it: you'll see the same one-click activation screen instead of a second signup.
Signing up, with an email address or with Google, puts you in your own organisation. To work in a colleague's team instead, open the account menu and choose Join a team. It lists the teams on your email domain, and your request stays pending until one of that team's admins approves it.
- Create an API key
In the dashboard, go to API Keys and create a key. Choose:
- Environment —
liveortest. Test keys search the same real corpus but cost zero credits. - Scopes — what the key may do. The dashboard pre-ticks
dsp.search.readanddsp.entities.read. For this quickstart you needdsp.search.read; adddsp.entities.readto look up full records,dsp.usage.readto read your balance and spend, anddsp.agents.read/dsp.agents.writefor agent runs. See Scopes. - Expiry — 1 to 730 days (the dashboard pre-fills 90). There is no "never expires".
- Environment —
- Store the key
Keys are server-side credentials. Put yours in an environment variable, never in source control and never in browser code:
export SPROUTS_API_KEY="sk_dsp_live_..." - Run your first search
curl -X POST https://api.sproutsdata.ai/v1/search \ -H "X-API-Key: $SPROUTS_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "query": "fintech companies in berlin", "mode": "fast", "category": "company", "limit": 10 }'Expect a live search to take a few seconds, not milliseconds — build a real loading state if this feeds a UI.
Read the response#
The "envelope" is the fixed set of fields wrapped around every answer — the same shape on every list endpoint, so once you can read one response you can read them all. Trimmed from a real response:
{
"results": [
{
"id": "solarisgroup.com",
"category": "company",
"score": 0.93,
"account_name": "Solaris SE",
"domain": "solarisgroup.com",
"industry": "Finance",
"employee_count": 611
}
],
"total": 10000,
"total_is_estimate": true,
"has_more": true,
"next_cursor": "eyJmIjoiMDNjMjUzNzk3MjM3MTI3ZSIsIm8iOjEs...",
"resolved_search": { "mode": "fast", "category": "company", "query": "fintech companies in berlin", "filters": {}, "filters_source": "none", "parser_version": "none", "semantic_query": "fintech companies in berlin", "conflicts": [], "overrides": [] },
"attribution": [{ "source_corpus": "gtm_index", "domain": null, "as_of": "2026-08-12T19:52:31Z", "url": null, "quote": null }],
"degradation": [],
"meta": { "request_id": "fc8735204043c339af9e9cbffaff2b21", "environment": "live", "as_of": "2026-08-12T19:52:31Z", "credential": "api_key", "credits_charged": 0.5 }
}Six fields worth noticing right away:
results[]— hits, with record fields flattened next toid,category, andscore. Fields vary by category; only those three are guaranteed on every hit.total_is_estimate— whentrue,totalis a floor, not a count. Render "10,000+" rather than "10,000".next_cursor— pass it back ascursorto get the next page. See Pagination.degradation[]— anything that limited this answer. Empty means nothing degraded, never "unknown".meta.request_id— log it. It's how support traces any request.meta.credits_charged— what this request cost. A Basic search's first page of 10 is 0.5 credits; a test key always reports0.
Chain a hit into a full record#
A search hit carries a summary of the record. To get the full record, send one of the hit's identifiers to Record Lookup. A hit's id is not a lookup id: for a company, send its domain with "by": "domain":
curl -X POST https://api.sproutsdata.ai/v1/entities/companies \
-H "X-API-Key: $SPROUTS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"ids": ["solarisgroup.com"], "by": "domain"}'For a person hit, send its linkedin_url to POST /v1/entities/persons with "by": "li_url". A lookup costs 1 credit per record found, and misses are free. This call needs the dsp.entities.read scope.
What you have now#
A working credential, a request you can paste into your own code, and the ability to read any response the platform returns — every list endpoint uses this same envelope. From here, the guides below take each capability in depth.