Skip to main content
POST

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 engineer

Location

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: 90
integer
At least N months in the current role. Example: 12
integer
At most N months in the current role. Example: 6

Education

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: 2015
integer
Degree ended in or before this year. Example: 2020

Credentials 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: true
boolean
Filter by LinkedIn Premium. Example: true
boolean
Filter by LinkedIn creator mode. Example: true
integer
Minimum follower count. Example: 1000

Contactability

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: true
boolean
As has_email, for phone numbers. Example: true

Response 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 an ignored_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

The response model

Properties

array
List of matching profiles.
integer
Number of credits used for this request. Example: 10
integer
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

Nothing is charged on any error.