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#

  1. 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.

  2. Create an API key

    In the dashboard, go to API Keys and create a key. Choose:

    • Environment — live or test. Test keys search the same real corpus but cost zero credits.
    • Scopes — what the key may do. The dashboard pre-ticks dsp.search.read and dsp.entities.read. For this quickstart you need dsp.search.read; add dsp.entities.read to look up full records, dsp.usage.read to read your balance and spend, and dsp.agents.read / dsp.agents.write for agent runs. See Scopes.
    • Expiry — 1 to 730 days (the dashboard pre-fills 90). There is no "never expires".
  3. 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_..."
  4. 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 to id, category, and score. Fields vary by category; only those three are guaranteed on every hit.
  • total_is_estimate — when true, total is a floor, not a count. Render "10,000+" rather than "10,000".
  • next_cursor — pass it back as cursor to 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 reports 0.

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.

Next steps#