{
"keyword": "software engineer",
"cities": ["San Francisco"],
"company_linkedin_urls": ["https://www.linkedin.com/company/stripe/"],
"exclude_company_linkedin_urls": ["https://www.linkedin.com/company/competitor-co/"],
"job_titles": ["Backend Engineer"],
"seniority": ["Senior", "Lead"],
"functions": ["Software Engineering"],
"degree_levels": ["bachelor"],
"min_months_in_role": 12,
"has_email": true,
"open_to_work": true,
"raw_data": false,
"limit": 50,
"offset": 0
}
{
"message": [
{
"id": 10432,
"entity_urn": "ACoAAC8Np1kB17Ro_b3eo8YZWUZFudbt9lrg1Tw",
"username": "jane-doe-1234",
"full_name": "Jane Doe",
"display_name": "Jane Doe",
"profile_headline": "Backend Engineer at Stripe",
"description": "Building payments infrastructure.",
"profile_link": "https://linkedin.com/in/jane-doe-1234",
"location": "San Francisco, California, United States",
"location_city": "San Francisco",
"location_state": "California",
"country": "United States",
"followers": 1240,
"connections": 500,
"is_premium": true,
"is_creator": false,
"is_influencer": false,
"is_job_seeker": false,
"is_openlink": false,
"is_retired": false,
"open_to_work": true,
"avatar_url": "https://media.licdn.com/dms/image/...",
"profile_picture": "https://media.licdn.com/dms/image/...",
"email": null,
"linkedin_url": "https://linkedin.com/in/jane-doe-1234",
"current_job_title": "Backend Engineer",
"current_company": "Stripe",
"current_job_location": "San Francisco, CA",
"current_employment_type": "Full-time"
}
],
"credit_used": 10,
"total": 1
}
People Search DB
Search Datamagnet’s own database of previously enriched LinkedIn profiles by keyword, location, company, job title, and more — with include/exclude support for company LinkedIn URLs.
POST
/
api
/
v1
/
people
/
search
/
db
{
"keyword": "software engineer",
"cities": ["San Francisco"],
"company_linkedin_urls": ["https://www.linkedin.com/company/stripe/"],
"exclude_company_linkedin_urls": ["https://www.linkedin.com/company/competitor-co/"],
"job_titles": ["Backend Engineer"],
"seniority": ["Senior", "Lead"],
"functions": ["Software Engineering"],
"degree_levels": ["bachelor"],
"min_months_in_role": 12,
"has_email": true,
"open_to_work": true,
"raw_data": false,
"limit": 50,
"offset": 0
}
{
"message": [
{
"id": 10432,
"entity_urn": "ACoAAC8Np1kB17Ro_b3eo8YZWUZFudbt9lrg1Tw",
"username": "jane-doe-1234",
"full_name": "Jane Doe",
"display_name": "Jane Doe",
"profile_headline": "Backend Engineer at Stripe",
"description": "Building payments infrastructure.",
"profile_link": "https://linkedin.com/in/jane-doe-1234",
"location": "San Francisco, California, United States",
"location_city": "San Francisco",
"location_state": "California",
"country": "United States",
"followers": 1240,
"connections": 500,
"is_premium": true,
"is_creator": false,
"is_influencer": false,
"is_job_seeker": false,
"is_openlink": false,
"is_retired": false,
"open_to_work": true,
"avatar_url": "https://media.licdn.com/dms/image/...",
"profile_picture": "https://media.licdn.com/dms/image/...",
"email": null,
"linkedin_url": "https://linkedin.com/in/jane-doe-1234",
"current_job_title": "Backend Engineer",
"current_company": "Stripe",
"current_job_location": "San Francisco, CA",
"current_employment_type": "Full-time"
}
],
"credit_used": 10,
"total": 1
}
People Search DB
Cost:10 credits/search.
Search Datamagnet’s internal database of already-enriched LinkedIn profiles. Unlike ICP People Search, which queries LinkedIn live, this endpoint searches previously collected profile records — so it returns instantly and doesn’t consume LinkedIn scraping capacity. Each page returns up to 50 results. For companies rather than people, see Company Search DB.
People search DB endpoint
Most filter fields accept multiple values. Values within the same field are OR’d together (e.g.["San Francisco", "New York"] matches either city); different fields are AND’d together. Booleans such as open_to_work take a single value.
Filters that use a fixed vocabulary — seniority, ownership, functions, degree_levels, fields_of_study, employment_types — reject a value they don’t recognise with a 422 that lists what is accepted. They never quietly return zero results for a word we couldn’t read.
Free text
string
Keyword search across name and headline. Also accepted as
q; if both are sent, keyword wins.Words shorter than three characters are dropped, and the remaining words are OR’d — "operations manufacturing quality" matches a profile containing any of those words, not all three. Adding words broadens the search; use the structured filters below to narrow it.Example: software engineerLocation
string[]
Filter by country, matched exactly (case-insensitive) against the stored country name. For a substring match, include a
% wildcard in the value — e.g. ["United %"].Example: ["United States", "Canada"]string[]
Filter by full location string. Partial match. Example:
["Greater New York City Area"]string[]
Filter by city. Partial match, against both the parsed city and the full location string. Example:
["San Francisco", "Austin"]string[]
Filter by state/region. Partial match, against both the parsed state and the full location string. Example:
["California"]Current company
A “current” position is one the profile still holds — the company filters,employment_types and employer_industries all read it the same way.
string[]
Filter by current company name. Partial match. Example:
["Stripe", "Plaid"]string[]
Filter by current company using its LinkedIn URL. Accepts a full URL, universal name, or numeric LinkedIn company ID.Example:
["https://www.linkedin.com/company/stripe/"]string[]
Exclude profiles whose current company matches any of these LinkedIn URLs. Accepts the same formats as
company_linkedin_urls (full URL, universal name, or numeric ID). Useful for filtering out a competitor or your own company from results.Example: ["https://www.linkedin.com/company/competitor-co/"]string[]
Filter by the current employer’s industry, matched exactly (case-insensitive). Resolved from the employer’s company page where the profile itself doesn’t carry an industry, which answers for roughly three quarters of people.Example:
["Financial Services", "Software Development"]Past company
string[]
Filter by a company the person has left (the position has an end date). Partial match. Example:
["Google"]string[]
Same as
past_companies, by LinkedIn URL, universal name, or numeric ID.Example: ["https://www.linkedin.com/company/google/"]Role
string[]
Filter by job title. Partial match, against any position on the profile — current or past. Use
seniority or functions when you want the role the person holds now.Example: ["CTO", "VP of Engineering"]string[]
Filter by the seniority of the current role, derived from the job title.Accepts our own labels —
Intern, Entry, Individual, Senior, Lead, Manager, Director, VP, C-suite — or the LinkedIn Sales Navigator words the ICP People Search endpoint uses (cxo, c-level, vice president, vp, director, manager, experienced manager, entry level manager, strategic, senior, entry level, in training, intern). Spelling is forgiving about case, spaces, hyphens and underscores.owner, founder and partner are accepted here too and resolve to the ownership axis below, so ["VP", "founder"] returns both groups.Example: ["VP", "C-suite"]string[]
Filter by ownership of the business, which is a separate axis from seniority — an owner is not a rung above a VP. Accepted values:
owner_founder (also spelled owner, founder, co-founder, self employed) and partner.Example: ["owner_founder"]string[]
Filter by department/function of the current role, from Datamagnet’s 40-function taxonomy. Accepts the name or its numeric id.
Software Engineering, Data & Analytics, IT & Systems, Information Security, Infrastructure & DevOps, Quality Assurance, Product Management, Design & UX, Sales, Business Development, Marketing, Revenue Operations, Customer Success, Customer Support, Finance, Accounting, Legal & Compliance, Human Resources, Recruiting & Talent, Administrative, Business Operations, Supply Chain & Logistics, Manufacturing & Production, Procurement, Engineering (non-software), Construction & Skilled Trades, Facilities & Real Estate, Transportation & Drivers, Consulting, Healthcare & Clinical, Education & Teaching, Research & Science, Media & Communications, Arts & Entertainment, Hospitality & Food Service, Retail, Public Sector, Protective Services, Social & Community Services, Agriculture & Environment.Titles that name no department (a bare “Founder”, for example) hold no function and are excluded rather than guessed at.Example: ["Sales", "Marketing"]string[]
Filter by the employment type of the current role. Accepted values:
full_time, part_time, contract, freelance, self_employed, internship, apprenticeship, seasonal.Each value covers the spellings LinkedIn uses for it — contract also matches Temporary, internship also matches Co-op, and so on. A profile whose employment type was never recorded matches none of them.Example: ["contract", "freelance"]Tenure
These read the start date of the current role. That date is as fresh as the profile’s last refresh, so a very recent job change may not be reflected yet — the filter can miss a change, never invent one.integer
Started their current role within the last N days. Example:
90integer
At least N months in the current role. Example:
12integer
At most N months in the current role. Example:
6Education
The education filters must all be satisfied by the same degree —degree_levels: ["bachelor"] with fields_of_study: ["Computer and Information Sciences"] means one bachelor’s in computing, not a bachelor’s in history plus a doctorate in computing.
string[]
Filter by school name. Partial match. Example:
["Stanford"]string[]
Accepted values:
secondary, associate, bachelor, master, doctorate. Common spellings resolve to these — bachelors, masters, phd, high school.Example: ["bachelor", "master"]string[]
Filter by field of study, grouped into 47 CIP families. Accepts the family name or its numeric id — e.g.
Computer and Information Sciences, Engineering, Business, Management, Marketing and Related Support Services, Health Professions and Related Programs, Social Sciences. A 422 lists all of them.Example: ["Computer and Information Sciences"]integer
Degree ended in or after this year. Example:
2015integer
Degree ended in or before this year. Example:
2020Credentials and skills
string[]
Filter by listed skill, matched exactly (case-insensitive) against the skill name. Example:
["Kubernetes", "Terraform"]string[]
Filter by certification name. Partial match. Must hold on the same certification as
certification_issuers. Example: ["AWS Certified Solutions Architect"]string[]
Filter by issuing organization. Partial match. Example:
["Amazon Web Services"]string[]
Filter by a language listed on the profile, matched exactly (case-insensitive) as LinkedIn spells it. Example:
["German", "Spanish"]Profile attributes
boolean
Filter by the LinkedIn open-to-work badge.This filter is tri-state rather than a plain on/off switch.
true returns profiles where the badge was seen. false returns profiles that were checked by a provider that reads the badge and did not have it. Profiles nobody has checked yet hold no badge information at all and are excluded from both sides, so false is not the complement of true, and leaving the field out is not the same as sending false.Example: trueboolean
Filter by LinkedIn Premium. Example:
trueboolean
Filter by LinkedIn creator mode. Example:
trueinteger
Minimum follower count. Example:
1000Contactability
boolean
true returns only profiles Datamagnet currently holds an email address for; false returns only those it holds none for. Like open_to_work, this describes our records, not the person — false is not a claim that they have no email.Example: trueboolean
As
has_email, for phone numbers. Example: trueResponse shape and paging
boolean
default:true
Whether to include the full
raw_data payload on each result. Send false to omit it — the response is much smaller and the search is faster, and every other field is unaffected.integer
default:50
Maximum number of results to return per page, from
1 to 50. A value outside that range is rejected rather than quietly reduced — page through larger result sets with offset.integer
default:0
Number of results to skip, for pagination.
Unrecognised fields
A field name this endpoint doesn’t know is not applied. The search still runs, and the response carries anignored_filters array naming what was dropped — so a mistyped job_title (for job_titles) shows up as a named mistake instead of a page of results that looks filtered but isn’t.
If every filter in the request was unrecognised, the search is refused with a 422 and no credits are charged, rather than run as an unfiltered scan of the whole database.
Response
{
"keyword": "software engineer",
"cities": ["San Francisco"],
"company_linkedin_urls": ["https://www.linkedin.com/company/stripe/"],
"exclude_company_linkedin_urls": ["https://www.linkedin.com/company/competitor-co/"],
"job_titles": ["Backend Engineer"],
"seniority": ["Senior", "Lead"],
"functions": ["Software Engineering"],
"degree_levels": ["bachelor"],
"min_months_in_role": 12,
"has_email": true,
"open_to_work": true,
"raw_data": false,
"limit": 50,
"offset": 0
}
{
"message": [
{
"id": 10432,
"entity_urn": "ACoAAC8Np1kB17Ro_b3eo8YZWUZFudbt9lrg1Tw",
"username": "jane-doe-1234",
"full_name": "Jane Doe",
"display_name": "Jane Doe",
"profile_headline": "Backend Engineer at Stripe",
"description": "Building payments infrastructure.",
"profile_link": "https://linkedin.com/in/jane-doe-1234",
"location": "San Francisco, California, United States",
"location_city": "San Francisco",
"location_state": "California",
"country": "United States",
"followers": 1240,
"connections": 500,
"is_premium": true,
"is_creator": false,
"is_influencer": false,
"is_job_seeker": false,
"is_openlink": false,
"is_retired": false,
"open_to_work": true,
"avatar_url": "https://media.licdn.com/dms/image/...",
"profile_picture": "https://media.licdn.com/dms/image/...",
"email": null,
"linkedin_url": "https://linkedin.com/in/jane-doe-1234",
"current_job_title": "Backend Engineer",
"current_company": "Stripe",
"current_job_location": "San Francisco, CA",
"current_employment_type": "Full-time"
}
],
"credit_used": 10,
"total": 1
}
The response model
Properties
array
List of matching profiles.
Show Profile object
Show Profile object
integer
Internal Datamagnet profile ID.
string
LinkedIn entity URN.
string
LinkedIn username/vanity URL.
string
Full name of the person.
string
Display name as shown on LinkedIn.
string
LinkedIn profile headline.
string
Profile description/about section.
string
LinkedIn profile URL.
string
Full location string.
string
City of the profile’s location.
string
State/region of the profile’s location.
string
Country of the profile’s location.
integer
Number of LinkedIn followers.
integer
Number of LinkedIn connections.
boolean
Whether the person has LinkedIn Premium.
boolean
Whether the person is a LinkedIn creator.
boolean
Whether the person is a LinkedIn influencer.
boolean
Whether the person is marked as a job seeker.
boolean
Whether the person uses OpenLink.
boolean
Whether the person is marked as retired.
boolean
Whether the person carries the LinkedIn open-to-work badge.
null when no provider that reads the badge has checked this profile, which is true of most of the database — it is not the same as false.string
Profile picture URL.
string
Profile picture URL (alternate source).
string
Email address, when available. May be
null.string
Computed LinkedIn profile URL, built from
username.string
Job title of the profile’s current position, when available.
string
Name of the profile’s current company, when available.
string
Location of the profile’s current position, when available.
string
Employment type of the current position (e.g.
Full-time), when available.object
The full stored payload this profile was built from. Included by default; send
raw_data: false in the request to omit it.integer
Number of credits used for this request. Example:
10integer
Number of results returned in this response.
string[]
Present only when the request contained field names this endpoint doesn’t recognise. Names them, so a typo shows up as a typo rather than as results that look filtered but aren’t. The rest of the search ran normally.
Errors
| Status | Meaning | What to do |
|---|---|---|
400 | The body was not a JSON object, or limit was outside 1–50, or offset was negative. message names the problem. | Fix the request. |
422 | Either every filter in the request was an unrecognised field name, or a fixed-vocabulary filter was given a value that doesn’t exist — an unknown function, a degree level that isn’t one of the five. message names what was rejected and lists what is accepted. | Correct the name or the value. |
504 | The search ran too long to answer. | Narrow it and retry — fewer countries, a more specific job title. A broad keyword with no structured filter beside it is the usual cause. |
Was this page helpful?