Pay as you go

LinkedIn profile data, ready for your code

pineapi searches LinkedIn by filter and returns every match as 53 structured fields. No LinkedIn account, no proxies and no session cookies, with asynchronous search and URL lookup through one API.

Per 1,000 delivered
$12
Minimum top-up
$5
Result retention
30 days

Search minimum $0.12. URL lookups have no minimum charge. No subscription.

Two ways to scrape LinkedIn, one balance

pineapi supports two inputs: search filters to discover profiles, or profile URLs to look up people you already know. Both use the same prepaid balance.

LinkedIn scraper API for developers

  • Set filters, get every matching profile as JSON.
  • 53 fields per profile plus 16 nested collections, versioned under /v1/.
  • No LinkedIn account, no session cookie, no proxies to rotate.
POST /v1/profile-searches
# Generate once; reuse this ID when retrying the same request.
PINEAPI_REQUEST_ID=$(uuidgen)
curl $PINEAPI_BASE_URL/v1/profile-searches \
  -H "Authorization: Bearer $PINEAPI_KEY" \
  -H "Idempotency-Key: $PINEAPI_REQUEST_ID" \
  -H "Content-Type: application/json" \
  -d '{"current_job_titles":["Head of Talent"],"locations":["Spain"],"max_items":100}'
Read the API reference

Use your AI assistant

  • Give Claude, ChatGPT or Cursor a compact API integration brief.
  • Use an assistant with HTTP tools to search or look up URLs.
  • Includes spending checks, polling, pagination and error handling.

Job title · location · industry · headcount · seniority · school · years of experience

Copy the assistant brief

The API supports filter searches and lookup by profile URL. Both return the same 53 fields plus 16 nested collections. URL lookup has no search minimum.

How scraping LinkedIn profiles works here

pineapi uses an asynchronous workflow: create a run, poll its status, then download the results.

  1. Describe who you are looking for

    Set the filters: titles, locations, industries, schools, company headcount, seniority, years of experience. Then say how many profiles you want back, from 25 to 2,000 in blocks of 25.

  2. Get the matching profiles

    pineapi runs the search and returns every match as 53 named fields plus 16 nested collections. Searches take minutes; lookups usually take seconds. These are not completion guarantees.

  3. Pay for the profiles delivered

    $0.012 per profile that comes back, with a $0.12 minimum per search. A search that fails is not billed at all.

Four things you can check yourself

pineapi claims these and nothing beyond them. Each one is verifiable from your own side of the API on the first day you use it, which is the only kind of claim worth making in a category where every vendor says the same adjectives.

One price, one line on the invoice

No compute units, no proxy fees, no actor cost and no per-GB egress to reconcile. You are quoted per profile and billed per profile.

No infrastructure to run

No proxies to rotate, no browser to keep alive, no LinkedIn account, no session cookie and no browser extension.

Two modes, one schema, one balance

Search by filters or look up profile URLs. Both modes return the same profile schema and draw from the same prepaid balance.

A published, stable response schema

Profile fields and nested collections generated from the OpenAPI contract, versioned under /v1/.

What you get back for every profile

pineapi returns 53 top-level fields per profile plus 16 nested collections, listed here in full. Dates are ISO dates rather than "Dec 2025" strings, endorsement counts are integers rather than "22 endorsements", and is_current is a boolean rather than the word "Present".

Anonymised demo · generated by the API normalizer
{
  "id": "00000000-0000-0000-0000-0000000000de",
  "ordinal": 0,
  "public_identifier": "morgan-duarte-006",
  "linkedin_url": "https://www.linkedin.com/in/redacted-1383",
  "requested_url": null,
  "first_name": "Morgan",
  "last_name": "Duarte",
  "full_name": "Morgan Duarte",
  "headline": "Working across product and engineering teams to ship things people use. Interested in systems ",
  "about": "Working across product and engineering teams to ship things people use. Interested in systems that stay simple as they grow. Working across product and engineering teams to ship things people use. Interested in systems that stay simple as they grow. Working across product and engineering teams to ship things people use. Interested in systems that stay simple as they ",
  "location_text": "Spain",
…

Profile fields

Generated from the API OpenAPI schema. Nullable values can be absent from the source profile.

idstring (uuid)

Id

ordinalinteger

Ordinal

public_identifierstring | null

Public Identifier

linkedin_urlstring

Linkedin Url

requested_urlstring | null

Requested Url

first_namestring | null

First Name

last_namestring | null

Last Name

full_namestring | null

Full Name

headlinestring | null

Headline

aboutstring | null

About

location_textstring | null

Location Text

location_citystring | null

Location City

location_statestring | null

Location State

location_region_codestring | null

Location Region Code

location_countrystring | null

Location Country

location_country_fullstring | null

Location Country Full

location_country_codestring | null

Location Country Code

open_to_workboolean | null

Open To Work

hiringboolean | null

Hiring

premiumboolean | null

Premium

influencerboolean | null

Influencer

creatorboolean | null

Creator

verifiedboolean | null

Verified

open_profileboolean | null

Open Profile

memorializedboolean | null

Memorialized

connections_countinteger | null

Connections Count

follower_countinteger | null

Follower Count

registered_atstring (date-time) | null

Registered At

profile_languagestring | null

Profile Language

profile_countrystring | null

Profile Country

profile_picture_urlstring | null

Profile Picture Url

photo_urlstring | null

Photo Url

cover_picture_urlstring | null

Cover Picture Url

current_titlestring | null

Current Title

current_company_namestring | null

Current Company Name

current_company_linkedin_urlstring | null

Current Company Linkedin Url

current_position_started_onstring (date) | null

Current Position Started On

total_months_experienceinteger | null

Total Months Experience

months_at_current_companyinteger | null

Months At Current Company

months_in_current_roleinteger | null

Months In Current Role

promoted_at_current_companyboolean

Promoted At Current Company

promotions_countinteger

Promotions Count

companies_countinteger

Companies Count

avg_months_per_companyinteger | null

Avg Months Per Company

linkedin_member_sincestring (date) | null

Linkedin Member Since

skills_flatstring[]

Skills Flat

languages_flatstring[]

Languages Flat

school_namesstring[]

School Names

company_namesstring[]

Company Names

section_totalsobject | null

Section Totals

experience_truncatedboolean

Experience Truncated

skills_truncatedboolean

Skills Truncated

scraped_atstring (date-time)

Scraped At

16 nested collections

education[]array of objects

Education

certifications[]array of objects

Certifications

languages[]array of objects

Languages

skills[]array of objects

Skills

projects[]array of objects

Projects

publications[]array of objects

Publications

courses[]array of objects

Courses

honors[]array of objects

Honors

volunteering[]array of objects

Volunteering

recommendations[]array of objects

Recommendations

interests[]array of objects

Interests

patents[]array of objects

Patents

organizations[]array of objects

Organizations

websites[]array of objects

Websites

top_skills[]array of objects

Top Skills

experiences[]array of objects

Experiences

ordinal · position · company_name · company_linkedin_url · employment_type · workplace_type · location · description · started_on · ended_on · is_current · duration_months · duration_text · skills

Email addresses are not returned. Field names are versioned under /v1/ and are not renamed, because pipelines and agents cache the shape of a response and a silent rename breaks them quietly.

Five fields LinkedIn does not publish

pineapi computes these from the work history rather than passing LinkedIn's raw shape through, and they are the reason the record is worth more than its source.

months_at_current_company vs months_in_current_role

Separate company tenure from role tenure without parsing the work history yourself.

promoted_at_current_company and promotions_count

See internal role changes derived from the work history, alongside company and role tenure.

experience_truncated and skills_truncated

40% of profiles come back with truncated work history and 68% with truncated skills. Any years-of-experience figure computed from one of those is an undercount, and you only know it happened if the record tells you.

Real dates, not display strings

started_on and ended_on are ISO dates and is_current is a boolean, so tenure arithmetic works without parsing month names.

endorsement_count as an integer

Skill endorsements come back as numbers you can sort on, not as the text LinkedIn renders.

LinkedIn scraping pricing: $0.012 per profile

$0.012per profile delivered · $12 per 1,000 · $0.12 minimum per search

pineapi charges $0.012 for every profile delivered, $12 per thousand, with a $0.12 minimum per search, which is the price of ten profiles. There is no subscription, no seat fee and no monthly minimum, and lookup has no search minimum. Top up from $5; credit does not expire.

A search that fails is not billed. A search that completes and matches nobody is billed the $0.12 minimum, because the search ran. Duplicates within a run are discarded and not billed. A profile delivered again in a separate run is billed again.

See the full pricing and calculator

Simple setup

Use pineapi with your AI assistant

Copy one brief into Claude, ChatGPT or Cursor. Give your assistant the steps to search, poll and download profiles through the API.

Use with AI →

Compare pineapi with other LinkedIn data tools

pineapi differs from the usual options in how the bill is built and in what each one needs from you. The table compares pricing models and setup requirements rather than a snapshot of rates that would go stale.

Pricing model and setup requirements compared across LinkedIn data sources
pineapiProxycurlPhantomBusterSales Navigator
Pricing model$0.012 per profile delivered, $0.12 minimum per searchWas per credit, service discontinuedSubscription: execution time, slots and creditsMonthly seat per user
Monthly minimumNonePlan minimumPlan minimumAnnual seat commitment
LinkedIn account or cookieNot requiredNot requiredYour session cookieYour own seat
Charged when nothing parsesNo. A failed search is not billedn/aYes. Runtime is billedn/a
CSV exportAvailable through the APINoYesExport is restricted

Compare: LinkedIn scraper APIs by workflow · Proxycurl migration guide

What people use pineapi for

pineapi is bought for three jobs, and the form asks which one you are doing so the reply arrives with a worked example rather than a brochure.

Sales prospecting

Filter by title, seniority, industry and company headcount, and get a prospect list with current role, employer and tenure ready to push into your CRM.

Recruitment sourcing

Filter by title, school, years of experience and location, and get a shortlist with experience history and truncation flags, including who has been promoted internally and who has not.

Data enrichment

Match people you already have to their profiles and write back title, employer, tenure and location on a schedule.

What pineapi collects, and what it does not

pineapi reads data that LinkedIn shows publicly, without logging into an account and without asking you for a session cookie. You do not provide your own LinkedIn credentials.

pineapi does not return email addresses or phone numbers, and is not an email-enrichment service. Profile free text may still contain personal information that requires careful handling. Search results stay downloadable for 30 days and are then deleted.

Under GDPR you are the controller for whatever you do with the data you receive: lawful basis, notice and retention are yours to decide. Consult the privacy notice and request the processing agreement for your use case.

Is scraping LinkedIn legal?

Get access

Tell pineapi what you are searching for and roughly how much of it. We will explain onboarding and help you choose the right integration.

pineapi can help with onboarding and your first integration. Paid runs require prepaid balance; there is no sandbox or test key.

A human replies within one business day. What we do with your details.

LinkedIn scraping questions people ask

How much does it cost to scrape a LinkedIn profile?

$0.012 per profile delivered, $12 per thousand, with a $0.12 minimum per search, which is the price of ten profiles. There is no subscription, no seat fee and no monthly minimum. A search that fails is not billed, and duplicates are billed: a profile you already received is billed again if it comes back.

What if my search returns no profiles?

That means no LinkedIn profiles matched your filters, not that the search failed. You are billed the $0.12 search minimum. Broaden a filter, usually location or job title, and run it again.

Do I need a LinkedIn account or cookies?

No. pineapi needs no LinkedIn account, no session cookie, no browser extension and no proxy of your own. You send filters and your API key, and the matching profiles come back. Nothing is tied to a personal login, so no account of yours is exposed by using it.

What data comes back for each profile?

53 top-level fields plus 16 nested collections: identity, headline and about, parsed location, status badges, follower and connection counts, current role, computed tenure and promotion history, flattened skills and schools, truncation flags, and arrays for experience, education, skills, certifications, languages, projects, publications and more. Email addresses are not returned.

How long does a search take?

Searches take minutes and lookups usually take seconds. Poll every 5 seconds for the first minute, then every 20 seconds. These are integration intervals, not a guaranteed completion time.

Is scraping LinkedIn legal?

It depends on the data, the jurisdiction and what you do next, and nobody can honestly answer it with a yes. Courts in the United States have repeatedly declined to treat scraping public pages as unauthorised access, while GDPR still applies to personal data you collect in Europe. Read the legality page before you build on it.

Do you have a free trial?

No, and there is nothing to cancel either. pineapi is pay as you go: you add balance, you spend it per profile delivered, you stop whenever. Top up by card from $5 before starting paid runs. The anonymised demo is the free sample; there are no test keys. You pay for what you run and nothing else.

Can I use this without writing code?

The product is an API. You can give the integration brief to an assistant with HTTP tools. The dashboard manages keys, balance and run history; a no-code scraping form and bulk CSV upload are not offered.

How long do you keep my results?

30 days. Search results stay available through the API and as CSV for that window, and re-downloading inside it is free. After 30 days they are deleted, so store anything you need to keep.

Are duplicate profiles billed twice?

Yes. Billing counts profiles delivered, so a profile that appears in two searches is billed in both. LinkedIn re-ranks search results over time, so consecutive paginated calls on the same search overlap by about 30%, so one large search costs less than several small ones covering the same ground.

Can I scrape Sales Navigator search results?

You do not need to. pineapi takes the same kind of filters directly, from title and seniority to industry, headcount and location, and returns the matching profiles as structured data. Keep your Sales Navigator seat for searching if you want it; you stop paying seats to get results out.

Last updated 2026-10-19