100 free credits on signup · no card required

LinkedIn People Search API

One keyword in. Clean JSON out.

Send a keyword string, get back an array of public LinkedIn profiles matching it — name, headline, location, current company, follower count, profile URL. This is LinkedIn's people search returned as JSON, logged out, reading only what a signed-out visitor can see. Billing is per profile returned at 5 credits, so a default 20-result search costs 100 credits.

Credits 5 / profile
Input ?query=
Cache 15m–7d
Paging limit
GET · BEARER
Request composing…
Fresh when it matters
age-aware cache
Works with your stack
cURL Python Node.js Zapier n8n Make MCP
One key · one credit balance · plain REST

The difference

Stop parsing markup. Start reading fields.

On the left, what a headless browser hands you. On the right, what the endpoint hands you.

Scraping it yourself raw HTML · every call
<div class="feed-shared-update-v2 artdeco-card" data-urn="urn:li:activity:7181111111111111111"><div class="update-components-text relative"><span dir="ltr">We just cut p95 latency in half by moving the cache closer to the edge.</span></div><div class="social-details-social-counts"><li class="social-details-social-counts__item"><span aria-label="842 reactions">842</span></li><li class="social-details-social-counts__comments">63 comments</li><li>41 reposts</li></div><time class="update-components-actor__sub-description">4d</time><code style="display:none">{"data":{"*elements":["urn:li:fsd_update:(urn:li:activity...
×Class names rotate; your selectors break weekly ×Headless browsers, proxies, blocks to babysit ×Counts arrive as strings, not numbers
One GET request 12 typed fields
{
"data": [
{
"platform": "linkedin",
"handle": "example-person",
"name": "Example Person",
"headline": "Head of Growth at Example Co",
"location": "Austin, Texas, United States",
"current_company": "Example Co",
"url": "https://www.linkedin.com/in/example-person"
}
],
"meta": {
"count": 1,
"limit": 20,
"item": "profile"
},
"request_id": "req_01JZX4M8Q2TE9W"
}
Stable field names, documented nulls No proxies, no browser, no login session Counters are integers you can sort on

The payload

What comes back

{ data, meta?, request_id }
01 One object per person

An array. Each element is one person: their public handle and profile URL, display name, the headline they wrote under it, where they say they are based, and the company on their current position. Follower and connection-adjacent counts come along when LinkedIn shows them publicly.

02 Same shape as single profile

The shape is identical to the single-profile endpoint, which is deliberate. You can search once, store the array, and later re-fetch any individual handle for a fresher read without writing a second parser or a second database table.

03 posts and email are null

Two fields deserve advance warning. `posts` is always null here — this endpoint indexes people, not their content. And `email` is null on essentially every result, because the search runs in the cheap profile mode that does not perform contact lookup. Do not build a lead-enrichment pipeline that assumes an address will arrive.

Field explorer Pick a key to see its type and the caveats.
number|null Nullable Per item
following

How many accounts this person follows. Rarely public; expect null far more often than a number.

{
"handle": "example-person",
"name": "Example Person",
"headline": "Head of Growth at Example Co",
"followers": 0,
"following": 0,
"posts": "…",
"bio": "…",
"verified": false,
"location": "Austin, Texas, United States",
"current_company": "Example Co",
"email": "…",
"url": "https://www.linkedin.com/in/example-person"
}
Good fit

Reach for this when

  • Building a prospect or candidate shortlist from a role-and-place query like "platform engineer Berlin", then pushing the handles into your own review queue.
  • Mapping who at a set of companies holds a given title, by running one narrow query per company and grouping on current_company.
  • Recruiting research where you need volume: a hundred plausible names with headlines and locations, so a human can spend their time on the shortlist rather than on the search box.
  • Seeding a monitoring list. Search once to discover handles, then poll the interesting ones individually with the LinkedIn Profile API on your own schedule.
  • Competitive team analysis — how many people describe themselves as working on a given product area, and where they say they are based.
Different job?

There's an endpoint for that

  • You already know the profile URL or handle. Use the LinkedIn Profile API, which returns one person for a flat 10 credits — 25 with include_email=true — instead of paying per search result.
  • You want a company's own record — employee count, industry, headquarters. That is the LinkedIn Company API.
  • You are looking for content rather than people. The LinkedIn Post Search API searches posts by keyword, and the LinkedIn Company Posts API returns a company page's feed.
  • You need verified email addresses or phone numbers. This endpoint does not return them, and no parameter turns them on.

Pricing

Start free, pay for what comes back

Billing is per profile returned at 5 credits — about 2.5¢ on the monthly plan — so a default 20-result search runs about 50¢, and a search matching nobody still costs 1 credit.

Estimate your bill
$15/ month
30 profiles/day × 5 credits × 365 days = 54,750 credits/yr, or $183/yr on the annual plan plus 43 top-up blocks Whichever plan is cheaper for that volume, divided by 12.
30
102,000
Credits / yr 54,750
Plan Annual $54/yr
Per profile

Estimate only, on a full-year basis. 5 credits per returned profile. Monthly: $5 per 1,000 credits with $4/1,000 top-ups. Annual: $54 per 12,000 credits with $3/1,000 top-ups. We show whichever plan is cheaper for your annual volume, divided by 12. Failed calls are never charged; cache hits cost the same as fresh calls.

Free trial
100 credits

On signup, no card. Your key is on screen immediately.

Get your free API key
Monthly $5/mo 1,000 credits. Top-ups $4 per extra 1,000.
Annual $54/yr 12,000 credits. Top-ups $3 per extra 1,000.

Entry price, side by side

Cheapest way to start

Verified July 2026 from each vendor's live pricing page
ScraperSocial
$5 / mo 1,000 credits · 100 free credits, no card
Supadata
$5 / mo 300 credits, annual commitment · 100 free/mo
SocialKit
$29 / mo 12,000 credits · 20 free credits
Dumpling AI
$40 / mo Billed annually · free tier size unpublished
ScrapeCreators
$47 pack 25,000 credits, no subscription · 100 free once

Credits are not equivalent units across vendors — each meters differently. Price your own workload on both before deciding on entry price alone. At high volume, several of these are cheaper per credit than we are.

Engineering notes

Docs you can build on

We document exactly how every endpoint behaves — nulls, caching, billing — so what you ship on day one is still running in month six. No surprises, no support tickets.

Failed calls are never charged Public data only, no login session Built for parallel traffic

5 credits per result. The default limit is 20, so an unqualified call costs 100 credits — about 50 cents on the monthly plan. Pass `limit` explicitly on every call in production code; a loop with limit=100 spends 500 credits per iteration and will drain a plan faster than you expect.

Billing follows what actually returns. A tight query that only matches six people costs 30 credits, not 100. That makes narrow queries cheaper as well as more useful, which is a rare alignment.

The `query` parameter is a single string handed to LinkedIn's own people search. Write it the way you would type it into the site: role words, a skill, a place, a company name. There is no AND/OR operator support, no field-scoping syntax, and no guarantee that quoting a phrase pins it exactly.

Relevance degrades as you add terms. Four or five words is usually the sweet spot; ten-word queries tend to return either nothing or a loose set that ignored half your input. If a query returns junk, shorten it rather than lengthening it.

We read what a signed-out visitor sees. LinkedIn shows signed-out visitors less than it shows a logged-in recruiter, which means some profiles are missing from results entirely, and the ones that appear often arrive with bio, followers and following null. That is coverage, not a bug in the parser.

There is no way to widen this. We do not log in, do not use member sessions, and do not reach anything behind a connection or paywall. If your use case depends on Recruiter-grade filters, this endpoint will disappoint you and you should know that before you spend credits.

Every result describes an identifiable person. Cached copies of this endpoint's responses are capped at 30 days rather than held indefinitely, and you should apply a similar discipline downstream: store what you need, set a retention window, and be ready to delete on request. Depending on where you and the person sit, GDPR or a state privacy law applies to what you keep, regardless of the data having been public.

Run the same query a week apart and expect a different set. People edit headlines, change jobs, tighten visibility settings, and LinkedIn re-ranks constantly. Deduplicate on `handle` when you merge runs, and never treat position in the array as a meaningful score.

Responses are cached in the fast class, so a repeated identical query inside the window returns in milliseconds and sets x-cache: hit. A cache hit costs the same credits. Add fresh=true when you deliberately want to re-run a search rather than re-read one.

Questions

Frequently asked

Send a GET request to /v1/linkedin/people-search with a query string and your API key. Your API key is the only credential involved — nothing to register with LinkedIn, nothing to wait for approval on. The endpoint reads public, signed-out search results and returns them as a JSON array. LinkedIn's own partner APIs do not expose people search to general developers at all, which is the usual reason people end up here.

5 credits per profile returned. Credits are $0.005 each on monthly and $0.0045 on annual, so the default 20 results run about 50 cents. Set the limit parameter to control it — you pay for what comes back, so a query matching four people costs 20 credits. Failed calls are never charged.

No. The `email` field exists in the response shape because the profile parser is shared with the single-profile endpoint, but people search runs in a mode that skips contact lookup, so it is null in practice. No parameter enables it. If you need contact data, take the handles from here and run them through a dedicated enrichment provider that is set up for that and handles the consent side.

Only through the wording of your query. The endpoint accepts a keyword string and a limit, nothing else — there are no structured filters for title, seniority, company size or industry. Put the company or title in the query text and then filter the returned array yourself on current_company or headline. Filtering afterwards does not refund credits for results you discard, so keep queries narrow.

Because LinkedIn does not show them to a signed-out visitor for most profiles. Search results carry a trimmed record; follower counts tend to appear only on accounts with a public audience, and the About section is often withheld. Fetching the same handle through the LinkedIn Profile API sometimes fills in more, but there is no setting that forces LinkedIn to publish a field it is hiding.

Set `limit` to what you need; the default is 20. That one call is all you get — there is no cursor or page token to fetch the next batch, so `limit` is the ceiling for the whole query. Larger limits take longer and the cost scales linearly at 5 credits each. In practice several tighter queries beat one broad query with a high limit — you get better relevance and you can stop paying as soon as a query stops being useful.

We only read public pages, logged out, with no member session and nothing behind a login. That said, legality depends on your jurisdiction and what you do with the records, and this is not legal advice. Results describe identifiable people, so treat them as personal data: keep a retention window, honour deletion requests, and check your obligations under GDPR or your local equivalent before you build a permanent database.

Next

Pairs well with

Full LinkedIn API reference →
/v1/linkedin/profile
LinkedIn Profile API Public profile data for a LinkedIn member: headline, positions, education. 10 cr / profile
/v1/linkedin/company
LinkedIn Company API Company page data: industry, size, followers and description. 10 cr / company
/v1/linkedin/search
LinkedIn Search API Keyword search over public LinkedIn posts. 5 cr / result
/v1/twitter/stats
X/Twitter Stats API Views, likes, reposts and replies for a single post on X. 1 cr / tweet

More LinkedIn endpoints

/v1/linkedin/stats Reactions, comments and reposts for a LinkedIn post. 5 credits / post /v1/linkedin/comments Paginated comments on a LinkedIn post; charged per comment returned. 5 credits / comment /v1/linkedin/profile Public profile data for a LinkedIn member: headline, positions, education. 10 credits / profile /v1/linkedin/company Company page data: industry, size, followers and description. 10 credits / company /v1/linkedin/company-posts Latest posts from a LinkedIn company page with per-post metrics. 5 credits / post /v1/linkedin/search Keyword search over public LinkedIn posts. 5 credits / result

Try the LinkedIn People Search endpoint free

100 trial credits on signup — no card, key on screen immediately.

1 Sign up free no card · 30 seconds
2 Copy your key sk_live_...
3 GET the endpoint /v1/linkedin/people-search
Get your free API key