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.
# 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}'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 briefThe 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.
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.
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.
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".
{
"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
ordinalintegerOrdinal
public_identifierstring | nullPublic Identifier
linkedin_urlstringLinkedin Url
requested_urlstring | nullRequested Url
first_namestring | nullFirst Name
last_namestring | nullLast Name
full_namestring | nullFull Name
headlinestring | nullHeadline
aboutstring | nullAbout
location_textstring | nullLocation Text
location_citystring | nullLocation City
location_statestring | nullLocation State
location_region_codestring | nullLocation Region Code
location_countrystring | nullLocation Country
location_country_fullstring | nullLocation Country Full
location_country_codestring | nullLocation Country Code
open_to_workboolean | nullOpen To Work
hiringboolean | nullHiring
premiumboolean | nullPremium
influencerboolean | nullInfluencer
creatorboolean | nullCreator
verifiedboolean | nullVerified
open_profileboolean | nullOpen Profile
memorializedboolean | nullMemorialized
connections_countinteger | nullConnections Count
follower_countinteger | nullFollower Count
registered_atstring (date-time) | nullRegistered At
profile_languagestring | nullProfile Language
profile_countrystring | nullProfile Country
profile_picture_urlstring | nullProfile Picture Url
photo_urlstring | nullPhoto Url
cover_picture_urlstring | nullCover Picture Url
current_titlestring | nullCurrent Title
current_company_namestring | nullCurrent Company Name
current_company_linkedin_urlstring | nullCurrent Company Linkedin Url
current_position_started_onstring (date) | nullCurrent Position Started On
total_months_experienceinteger | nullTotal Months Experience
months_at_current_companyinteger | nullMonths At Current Company
months_in_current_roleinteger | nullMonths In Current Role
promoted_at_current_companybooleanPromoted At Current Company
promotions_countintegerPromotions Count
companies_countintegerCompanies Count
avg_months_per_companyinteger | nullAvg Months Per Company
linkedin_member_sincestring (date) | nullLinkedin Member Since
skills_flatstring[]Skills Flat
languages_flatstring[]Languages Flat
school_namesstring[]School Names
company_namesstring[]Company Names
section_totalsobject | nullSection Totals
experience_truncatedbooleanExperience Truncated
skills_truncatedbooleanSkills Truncated
scraped_atstring (date-time)Scraped At
16 nested collections
education[]array of objectsEducation
certifications[]array of objectsCertifications
languages[]array of objectsLanguages
skills[]array of objectsSkills
projects[]array of objectsProjects
publications[]array of objectsPublications
courses[]array of objectsCourses
honors[]array of objectsHonors
volunteering[]array of objectsVolunteering
recommendations[]array of objectsRecommendations
interests[]array of objectsInterests
patents[]array of objectsPatents
organizations[]array of objectsOrganizations
websites[]array of objectsWebsites
top_skills[]array of objectsTop Skills
experiences[]array of objectsExperiences
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.
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.
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.
| pineapi | Proxycurl | PhantomBuster | Sales Navigator | |
|---|---|---|---|---|
| Pricing model | $0.012 per profile delivered, $0.12 minimum per search | Was per credit, service discontinued | Subscription: execution time, slots and credits | Monthly seat per user |
| Monthly minimum | None | Plan minimum | Plan minimum | Annual seat commitment |
| LinkedIn account or cookie | Not required | Not required | Your session cookie | Your own seat |
| Charged when nothing parses | No. A failed search is not billed | n/a | Yes. Runtime is billed | n/a |
| CSV export | Available through the API | No | Yes | Export 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.
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