The fastest way to start scraping LinkedIn at scale. Our LinkedIn API returns structured JSON for job search, company and school profiles, member profiles, posts, articles, and courses — with anti-bot bypass built in. No LinkedIn account or login.
No credit card required · PAYG credits never expire
# Search remote engineering roles
import scrapebadger
client = scrapebadger.ScrapeBadger("sb_live_...")
results = client.linkedin.search_jobs(
keywords="software engineer",
location="San Francisco",
workplace="remote"
){
"job_id": "3820394821",
"title": "Senior Software Engineer",
"company": "Acme Corp",
"location": "San Francisco, CA",
"posted_relative": "2 days ago",
"is_new": true
}Structured JSON responses with normalized data models. No HTML parsing. No proxy management. No LinkedIn account.
/v1/linkedin/jobs/search/v1/linkedin/jobs/{job_id}/v1/linkedin/companies/{company_id}/jobs/v1/linkedin/companies/{universal_name}/v1/linkedin/schools/{universal_name}/v1/linkedin/profiles/{public_id}/v1/linkedin/posts/{post_slug}/v1/linkedin/articles/{article_slug}/v1/linkedin/learning/{course_slug}/v1/linkedin/geo/suggestAll fields are normalized from LinkedIn's page data. Nested blocks — experience, education, salary — come pre-parsed.
job_idstringNumeric LinkedIn job IDtitlestringJob titlejob_urlstringCanonical job posting URLcompanystringHiring company namecompany_urlstring|nullCompany LinkedIn URLcompany_logostring|nullCompany logo image URLlocationstring|nullJob locationposted_atstring|nullISO 8601 posting timestampposted_relativestring|nullRelative age e.g. "2 days ago"is_newbooleanWhether the posting is flagged newsalarystring|nullSalary range (detail endpoint)seniority_levelstring|nullSeniority level (detail endpoint)applicants_countinteger|nullNumber of applicants (detail endpoint)public_idstringProfile vanity slugnamestringMember full nameheadlinestring|nullProfile headlinelocationstring|nullMember locationaboutstring|nullAbout / summary textfollower_countinteger|nullNumber of followerscurrent_companystring|nullCurrent employerexperience[]arrayRoles with company, start/end yeareducation[]arraySchools with start/end yearlanguages[]arraySpoken languagesLinkedIn is a single worldwide network. An optional country parameter geo-targets the proxy so localized job results and content resolve the way a local user would see them.
No proxy setup. No session management. No anti-bot configuration.
Call any LinkedIn endpoint with your API key and parameters — a job search, a company slug, a member public ID, or a post URL. REST or SDK.
ScrapeBadger handles LinkedIn’s anti-bot, browser rendering, and residential proxy routing transparently, detecting blocks and retrying automatically.
Receive normalized JSON with job, company, profile, and content details — ready to store, analyse, or pipe into your application.
Scraping LinkedIn gives you real professional signals — hiring demand, company growth, talent supply, and B2B firmographics.
Track open roles by title, location, company, and seniority to map hiring demand, salary bands, and workforce shifts across industries.
Monitor company size, headcount growth, specialties, and follower counts to benchmark competitors and spot expansion signals.
Pull structured member profiles — headline, experience, education, and skills — to build candidate pipelines and enrich your ATS.
Collect structured job postings, company profiles, and professional bios to train hiring, matching, or resume-parsing models.
Read posts, Pulse articles, and course data to measure engagement, monitor influencers, and surface trending professional topics.
Resolve companies and geographies via typeahead, then enrich B2B leads with firmographic and profile data on demand.
You only pay for successful responses — failed requests are always free. PAYG credits never expire; volume subscription tiers reduce per-credit cost further.
| Endpoint | Credits / request | PAYG | Subscription |
|---|---|---|---|
Job Search /jobs/search | 5 credits | — | — |
Job Detail /jobs/{job_id} | 5 credits | — | — |
Company Jobs /companies/{company_id}/jobs | 5 credits | — | — |
Company /companies/{universal_name} | 6 credits | — | — |
School /schools/{universal_name} | 6 credits | — | — |
Profile /profiles/{public_id} | 8 credits | — | — |
Post /posts/{post_slug} | 5 credits | — | — |
Article /articles/{article_slug} | 5 credits | — | — |
Learning Course /learning/{course_slug} | 5 credits | — | — |
Geo / Company Suggest /geo/suggest | 2 credits | — | — |
See the full plan comparison on the pricing page — subscription tiers step down per-credit cost beyond the cheapest column shown above.
ScrapeBadger's LinkedIn Scraper API handles everything LinkedIn throws at automated requests — so your pipeline keeps running.
Ten endpoints cover job search and detail, company and school profiles, member profiles, feed posts, Pulse articles, LinkedIn Learning courses, and geo/company typeahead — one API for the whole graph.
LinkedIn is one of the hardest sites to scrape, with aggressive rate-limiting and auth walls. ScrapeBadger handles browser rendering and residential proxy routing transparently. No LinkedIn account or login required.
Responses are normalized typed JSON — no HTML to parse, no fragile CSS selectors that break when LinkedIn updates its frontend.
LinkedIn is a single global graph. An optional country parameter geo-targets the proxy so localized job results and content resolve the way a local user would see them.
Credits are only deducted for successful responses. If LinkedIn returns an error or the request times out, no credits are consumed. You only pay for data you actually receive.
Official SDKs for Python, Node.js, Go, Rust, PHP, C#, Java, Kotlin, Ruby, Swift, Dart and C++ — generated from one OpenAPI spec, always in sync with the API. Full documentation with working code examples for every endpoint.
Get started in minutes with Python, Node.js, or plain HTTP requests.
The scrapebadger Node.js library wraps the LinkedIn API with typed methods. Install with npm install scrapebadger, then start scraping LinkedIn in a few lines of code.
import ScrapeBadger from 'scrapebadger'
const client = new ScrapeBadger({
apiKey: 'sb_live_...'
})
// Search remote engineering roles
const results = await client.linkedin.searchJobs({
keywords: 'software engineer',
workplace: 'remote',
datePosted: 'past_week',
})
// Get full detail for the first result
const first = results.jobs[0]
const detail = await client.linkedin.job({ jobId: first.jobId })
console.log(detail.title, detail.salary, detail.applyUrl)import ScrapeBadger from 'scrapebadger'
const client = new ScrapeBadger({
apiKey: 'sb_live_...'
})
// Firmographics for a company
const company = await client.linkedin.company({
universalName: 'microsoft',
})
console.log(company.industry, company.employeeCount)
// Enrich a member profile
const profile = await client.linkedin.profile({
publicId: 'williamhgates',
})
console.log(profile.headline, profile.currentCompany)Common questions about scraping LinkedIn with the API — Python, Node.js, or REST.
Job search returns job cards with job_id, title, URL, company, location, posting date, and new flag; job detail adds the full description, salary, seniority, employment type, job functions, industries, applicant count, and apply URL. Company and school endpoints return firmographic profiles — industry, size, HQ, founded year, specialties, and follower counts. Profile returns a member’s headline, about, experience, education, languages, and awards. Posts, articles, and learning endpoints return content with author, text, timestamps, and engagement.
No. ScrapeBadger handles LinkedIn’s anti-bot, browser rendering, and residential proxy routing transparently — you never sign in, manage cookies, configure proxies, or solve challenges. Every endpoint is public and requires only your ScrapeBadger API key.
Yes. Job search accepts keywords, location or a geo_id, a company_id, date_posted (past_24h, past_week, past_month, or any), a CSV of experience levels (internship, entry, associate, mid_senior, director, executive), a CSV of job types (full_time, part_time, contract, temporary, internship, volunteer, other), a CSV of workplace types (onsite, remote, hybrid), a sort order (relevant or recent), and a pagination offset (start).
LinkedIn combines auth walls, TLS/HTTP fingerprinting, aggressive rate-limiting, and IP reputation checks. ScrapeBadger routes every request through browser rendering and residential proxies, detecting blocks and retrying automatically — so you get structured JSON without managing any of it. No LinkedIn account is required.
Install with `pip install scrapebadger` or `npm install scrapebadger`, then initialise the client and call client.linkedin.searchJobs({ keywords: "software engineer", location: "Berlin" }), client.linkedin.job({ jobId: "3820..." }), client.linkedin.company({ universalName: "microsoft" }), or client.linkedin.profile({ publicId: "williamhgates" }). The SDKs return typed objects for every endpoint.
Per-request credit costs are listed above. For higher monthly volume, subscription tiers reduce the per-credit rate substantially. All LinkedIn endpoints — job search, company, school, profile, posts, articles, and courses — included on every plan.
1,000 free credits. No credit card. Get your API key in under a minute.
PAYG credits never expire · Pay only for successful requests · Global coverage