Sprouts Data & Enrichment
API Documentation
Search Sprouts' company & people database and reveal verified contact
information. Two REST endpoints, one consistent authentication model, and copy-ready
cURL + JSON examples throughout.
Protocol HTTPS · JSON over POST
Rate limit 60 requests per 60 seconds
Version 1.0
Conventions
Both APIs are JSON-over-HTTPS and use POST, authenticating with request
headers. Throughout, replace the placeholders <YOUR_API_SECRET>,
<YOUR_LOGIN_EMAIL>, and <YOUR_CUSTOMER_ID> with your own credentials.
- Sprouts Data API — Accounts & Contacts Search the database
- Account filters Firmographics, tech, funding & more
- Contact filters Role, seniority, activity & history
- Response & pagination Result shape and paging
- Contact Enrichment API Reveal email & phone
<YOUR_…> placeholder, and keep
your API secret private.Sprouts Data API
Search Sprouts' company and people database for accounts (companies) and
contacts (people). A single endpoint serves both — switch with the request_type field.
1.1Authentication
Every request must include these headers:
| Header | Description |
|---|---|
X-API-SECRET |
Your API secret. |
X-Login-Email |
The login email of the account making the request. |
X-Customer-ID |
Your customer ID. |
1.2Request body
{
"request_type": "Account", // "Account" or "Contact" — required
"filters": { /* flat filter object, see below */ },
"page": 1, // 1-indexed page number (default 1)
"page_size": 10, // results per page (default 10, max 100)
"contacts_per_account": 5, // Contact search only — max contacts per account
"account_type": "net_new" // Account search only — "net_new", "saved", or omit for both
}
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
request_type |
string | yes | — | "Account" or "Contact". |
filters |
object | no | {} |
Filters to apply (logical AND). |
page |
integer | no | 1 |
1-indexed page number. |
page_size |
integer | no | 10 |
Results per page (1–100). |
contacts_per_account |
integer | no | — | Contact only — caps contacts per account. Max 20. |
account_type |
string | no | — | Account only — "net_new" or "saved". Values are
case-insensitive. Omit it (or send null / "") to search both. |
contact_type |
string | no | — | Contact only — "net_new" or "saved". Values are
case-insensitive. Omit it (or send null / "") to search both. |
account_type belongs to an Account search and
contact_type to a Contact search; each accepts "NET_NEW" or
"SAVED". Sending the field that doesn't match request_type, or a value
outside that pair, returns 422 with detail in the
array form.1.3The filters object
A flat object: each key is a field name, each value the constraint. All filters must match (logical AND); within a list-valued filter, any value may match (logical OR).
{
"request_type": "Account",
"filters": {
"industry": ["Financial Software"],
"employee_count": { "min": 50, "max": 500 }
}
}
[ ... ] matches any value;
{"includes": [...], "excludes": [...]} sets explicit include/exclude;
{"min": N, "max": N} is a numeric range. Numbers are passed as numbers, dates as
YYYY-MM-DD strings.
1.4Account filters
Use these when request_type is "Account". Filters marked
both also work in a contact search (filtering by the contact's company).
1.4.1location — Headquarters location
Filter by the company's HQ location. Each value is "<Name>::<type>"
where type is country, state, city, or
region.
{ "location": ["Canada::country", "San Francisco::city"] }
1.4.2company — Company name or website
Match specific companies by name or website.
{ "company": ["salesforce.com", "Acme Corp"] }
1.4.3industry — Industry both
Filter by industry. Use recognized industry names (e.g. "Financial Software",
"Healthcare", "Retail").
{ "industry": ["Financial Software", "Financial Services"] }
1.4.4company_keyword — Company keyword both
Free-form descriptors that aren't formal industries (e.g. startup,
unicorn, enterprise, women-led).
{ "company_keyword": ["startup", "unicorn"] }
1.4.5keywords — Words in the company name or description
Match literal words in a company's name and/or description. Pick exactly one scope key —
includes (any word), includeAll (all words), or excludes. Optional
fields targets ["companyName"] or ["companyDescription"]; omit to
search all fields.
// Match words in the company name
{ "keywords": { "includes": ["Hospice", "Palliative Care"], "fields": ["companyName"] } }
// Match words in the company description
{ "keywords": { "includes": ["logistics", "supply chain"], "fields": ["companyDescription"] } }
// Exclude companies whose name contains certain words
{ "keywords": { "excludes": ["Holdings", "Group"], "fields": ["companyName"] } }
1.4.6technology — Technology used both
Filter by commercially-named products the company uses. Include name variations in the same array.
{ "technology": ["Salesforce", "Shopify"] }
1.4.7employee_count — Employee count both
{ "employee_count": { "min": 50, "max": 1000 } }
1.4.8employee_by_department — Employees by department both
Headcount for a specific department. Department names are keys; each maps to a
min/max range.
{ "employee_by_department": { "Accounting": { "min": 10, "max": 50 }, "Sales": { "min": 20 } } }
1.4.9revenue — Annual revenue (USD) both
{ "revenue": { "min": 1000000, "max": 10000000 } }
1.4.10funding — Funding both
Filter by funding stage, total funding, and/or last funding date. All sub-fields optional.
Valid stages: Pre-Seed, Seed, Angel,
Series A–Series J, Venture, Growth Equity,
Post-Ipo Debt, Post-Ipo Equity, Secondary Market, IPO.
{ "funding": {
"stages": ["Series A", "Series B"],
"total_funding": { "min": 1000000, "max": 50000000 },
"last_funding_date": { "between": ["2020-01-01", "2020-12-31"] }
} }
1.4.11founded_year — Founded year both
{ "founded_year": { "min": 2016, "max": 2020 } }
1.4.12business_type — B2B / B2C both
Values: B2B, B2C (uppercase).
{ "business_type": ["B2B"] }
1.4.13product_service — Product / Service both
Values: Product, Service.
{ "product_service": ["Service"] }
1.4.14profit_type — Profit / Non-Profit both
Values: Profit, Non-Profit, Both.
{ "profit_type": ["Non-Profit"] }
1.4.15govt_type — Government / Non-Government both
Values: Government, Non-Government, Both.
{ "govt_type": ["Government"] }
1.4.16postal_code — Postal code both
Postal / ZIP codes as strings (preserves leading zeros).
{ "postal_code": ["94105", "10001"] }
1.4.17sic — SIC code both
{ "sic": ["7372"] }
1.4.18naics — NAICS code both
{ "naics": ["541511"] }
1.4.19job_openings — Active job openings both
Filter companies by their open roles. All sub-fields optional; posted_within_days
is a number of days.
{ "job_openings": {
"title": ["Project Manager"],
"seniority": ["Director"],
"location": ["India::country"],
"posted_within_days": 60
} }
1.4.20employee_distribution — Global presence both
Two modes: COUNTRY_COUNT (at least N employees in at least K countries) or
SPECIFIC_COUNTRIES (at least N in each listed country).
{ "employee_distribution": [
{ "mode": "SPECIFIC_COUNTRIES", "employee_per_country": 10, "countries": ["united states", "united kingdom"] }
] }
1.5Contact filters
Use these when request_type is "Contact".
1.5.1company — Current company
Return contacts who work at these companies. Values are company names, websites or company linkedin url, the same
form the account-side company filter accepts.
{ "company": ["Sprouts.ai", "google.com"] }
1.5.2location — Contact location both
Same "<Name>::<type>" convention; targets the person's location.
{ "location": ["New York::city", "California::state"] }
1.5.3contact_name — Contact name or LinkedIn URL
Look up specific people by name or LinkedIn profile URL.
{ "contact_name": ["John Smith", "https://www.linkedin.com/in/janedoe/"] }
1.5.4job_title — Job title
The person's job title. Keep the department out (use department).
{ "job_title": ["Software Engineer", "Data Analyst"] }
1.5.5department — Department
Accepts a top-level department or a sub-department — 22 top-level
departments and 225 sub-departments in all. A top-level value matches everyone in its sub-departments, so
Engineering / Software alone covers Backend Development,
QA / Test / Quality Engineering and the rest. Examples: Finance,
Marketing, Sales, Human Resources / People,
IT & Infrastructure, Operations, Legal, Risk & Compliance.
See the filter taxonomy for every accepted value; anything
else returns a 422 naming the valid values.
{ "department": ["Finance", "Engineering / Software", "Demand Generation / Growth"] }
1.5.6seniority — Seniority
Seven values, ranked (high → low): C-Suite, VP,
Director / Head, Manager, IC, Entry,
In Training. Note the hyphen in C-Suite. Founder,
Owner and Partner are no longer seniority values — use
governance_level instead. Any other value returns a
422.
{ "seniority": ["C-Suite", "VP"] }
1.5.7governance_level — Governance level
The person's ownership or governance role: Founder, Co Founder,
Owner, Board Member, Advisor, Investor,
Partner, None. This is separate from seniority, not an extra
seniority value. Filters are ANDed, so pairing it with seniority narrows to people who are
both — send it on its own to match every founder regardless of title.
{ "governance_level": ["Founder", "Co Founder"] }
1.5.8employment_type — Employment type
How the person is engaged by the company: Consultant (External),
Contractor, Freelancer, Part Time, Full Time.
{ "employment_type": ["Contractor"] }
1.5.9has_csuite_access — C-suite access
Whether the person has direct access to the C-suite. Takes a boolean
(true / false), not a list.
{ "has_csuite_access": true }
1.5.10designation — Designation
A more specific designation than seniority.
{ "designation": ["Chief Executive Officer", "Vice President"] }
1.5.11position_start_date — Position start date
When the person started their current role. Dates are YYYY-MM-DD.
{ "position_start_date": { "min": "2023-01-01", "max": "2023-12-31" } }
1.5.12recent_job_change_days — Recently changed jobs
People who changed jobs within the last N days.
{ "recent_job_change_days": 60 }
1.5.13past_company — Past company / role
Filter by a person's previous company, title, and/or how recently they left
(left_within_days, in days). All sub-fields optional.
{ "past_company": {
"domain": ["Google"],
"title": ["Software Engineer"],
"left_within_days": 90
} }
1.6Examples
1.6.1Account search
Fintech companies in the US with 50–500 employees that raised a Series A:
curl -X POST https://ml.sprouts.ai/utility/sproutsdata \
-H "Content-Type: application/json" \
-H "X-API-SECRET: <YOUR_API_SECRET>" \
-H "X-Login-Email: <YOUR_LOGIN_EMAIL>" \
-H "X-Customer-ID: <YOUR_CUSTOMER_ID>" \
-d '{
"request_type": "Account",
"page": 1,
"page_size": 25,
"filters": {
"industry": ["Financial Software", "Financial Services"],
"location": ["United States::country"],
"employee_count": { "min": 50, "max": 500 },
"funding": { "stages": ["Series A"] }
}
}'
1.6.2Contact search
VPs and C-Suite in IT & Infrastructure at companies in California, capped at 5 contacts per account:
curl -X POST https://ml.sprouts.ai/utility/sproutsdata \
-H "Content-Type: application/json" \
-H "X-API-SECRET: <YOUR_API_SECRET>" \
-H "X-Login-Email: <YOUR_LOGIN_EMAIL>" \
-H "X-Customer-ID: <YOUR_CUSTOMER_ID>" \
-d '{
"request_type": "Contact",
"page": 1,
"page_size": 25,
"contacts_per_account": 5,
"filters": {
"department": ["IT & Infrastructure"],
"seniority": ["C-Suite", "VP"],
"location": ["California::state"]
}
}'
1.7Response
Returns a page of matching records:
{
"list": [ /* array of account or contact records */ ],
"page": 1,
"size": 25,
"total_elements": 1432,
"extra_params": { }
}
| Field | Description |
|---|---|
list |
Records on this page (account or contact objects). |
page |
The page number returned. |
size |
The page size used. |
total_elements |
Total records matching the filters. |
page until you've retrieved
total_elements records.
Enrich Contact Email & Phone API
Reveal a contact's work email and/or phone number from their LinkedIn profile URL.
2.1Authentication
Every request must include these headers:
| Header | Description |
|---|---|
X-API-SECRET |
Your API secret. |
X-Login-Email |
The login email of the account making the request. |
X-Customer-ID |
Your customer ID. |
2.2Request body
{
"linkedin_url": "https://www.linkedin.com/in/janedoe/", // required
"enrich_email": true, // reveal work email (default true)
"enrich_phone": false, // reveal phone number (default false)
"domain": "company.com" // optional — improves match accuracy
}
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
linkedin_url |
string | yes | — | LinkedIn profile URL. Must be non-empty. |
enrich_email |
boolean | no | true |
Reveal the contact's work email. |
enrich_phone |
boolean | no | false |
Reveal the contact's phone number. |
domain |
string | no | null |
Company domain. Optional, improves match accuracy. |
enrich_email or enrich_phone must be
true — both false is rejected with 422.
Field name aliases
Field names accept both snake_case and camelCase:
| Canonical | Also accepted |
|---|---|
linkedin_url |
linkedinUrl, LinkedinUrl, LinkedInUrl |
enrich_email |
enrichEmail |
enrich_phone |
enrichPhone |
domain |
Domain |
2.3Response
{
"email": "jane.doe@company.com", // null if not requested or not found
"phone": "+1-415-555-0132" // null if not requested or not found
}
null. A requested field is null
when no value was found — still a successful 200, not an error.2.4Examples
2.4.1Reveal email only (default)
curl -X POST https://ml.sprouts.ai/utility/enrich-contact-email \
-H "Content-Type: application/json" \
-H "X-API-SECRET: <YOUR_API_SECRET>" \
-H "X-Login-Email: <YOUR_LOGIN_EMAIL>" \
-H "X-Customer-ID: <YOUR_CUSTOMER_ID>" \
-d '{
"linkedin_url": "https://www.linkedin.com/in/janedoe/"
}'
2.4.2Reveal both email and phone, with a domain hint
curl -X POST https://ml.sprouts.ai/utility/enrich-contact-email \
-H "Content-Type: application/json" \
-H "X-API-SECRET: <YOUR_API_SECRET>" \
-H "X-Login-Email: <YOUR_LOGIN_EMAIL>" \
-H "X-Customer-ID: <YOUR_CUSTOMER_ID>" \
-d '{
"linkedin_url": "https://www.linkedin.com/in/janedoe/",
"enrich_email": true,
"enrich_phone": true,
"domain": "company.com"
}'
2.4.3Phone only
curl -X POST https://ml.sprouts.ai/utility/enrich-contact-email \
-H "Content-Type: application/json" \
-H "X-API-SECRET: <YOUR_API_SECRET>" \
-H "X-Login-Email: <YOUR_LOGIN_EMAIL>" \
-H "X-Customer-ID: <YOUR_CUSTOMER_ID>" \
-d '{
"linkedin_url": "https://www.linkedin.com/in/janedoe/",
"enrich_email": false,
"enrich_phone": true
}'