Stop scraping LinkedIn. Call it.
A scraper returns the truncated public page — two roles instead of seven, no headcount history, no Sales Navigator. Edges returns the complete record, read at request time. One REST API, structured JSON, no anti-bot, no cookies.
Edges is not related to LinkedIn and is not an official LinkedIn product.
- Selectors break when LinkedIn ships UI tweaks. On-call paged at 2am.
- Rotate proxies + cookies. Pay the proxy bill. Manage account warmup yourself.
- Parse HTML. Maintain a brittle DOM-to-JSON layer per surface.
- You own ToS posture. One mis-tuned scraper hits a hard rate limit and the account dies.
- No SLA, no status page. When it breaks, you find out from a customer.
- Documented endpoints. POST a URL, get typed JSON. We absorb LinkedIn changes.
- Managed access. Your app never touches a cookie. No proxy bill.
- Stable schemas. Versioned API; breaking changes ship behind /v2, not on Tuesday.
- Rate posture built-in. Per-identity budgets, ramping, cool-downs — handled.
- Status page + SLA. When something breaks, we tell you. Enterprise tier gets a phone.
- Customers
- 100+
- shipping LinkedIn in production
- Uptime
- 99%+
- status page · SOC 2 Type II
- Live read
- p50 1.2s
- p99 2.4s
- Actions
- 70+
- one runner, one key
// used by
// What you stop maintaining
The boring infra you'd build in week three — already in the API.
The numbers below come from talking to teams switching off a scraper. Your mileage varies, but the categories don't.
// selectors.json
HTML parsing layer
The brittle DOM-to-JSON code that breaks every time LinkedIn ships a UI tweak. Including the 11 files of fallback selectors per surface.
~ 6 h / month saved
// session-pool/
Account session management
Cookie storage, refresh, rotation across accounts. The fingerprinting library you forked once and never updated.
~ 4 h / month saved
// proxies.yml
Proxy + IP rotation
The $400/mo proxy contract, the residential IP pool you swap when LinkedIn blocks a range, the geolocation routing.
~ 3 h / month + $400/mo saved
// rate-limit-policy.ts
Anti-bot & rate posture
Human-pace pacing, jittered delays, cool-downs, the table of how-much-is-too-much per LinkedIn surface that you reverse-engineered from incidents.
~ 3 h / month saved
// incident-runbook.md
Breakage response on-call
The Slack channel, the playbook, the postmortems. The deploy at 2am to patch a parser. The customer comms when an extract failed overnight.
~ 5 h / month saved
// account-warmup.cron
Account warmup scripts
The slow-ramp script that takes 21 days to bring a new LinkedIn account up to full send budget without tripping risk.
~ 2 h / month saved
// Actions, not URLs
You don't scrape a URL — you call an action.
The vocabulary shifts. Instead of “fetch this page, parse it, retry on failure” you say what you want and we figure out the page.
Enrich profile linkedin-extract-people
URL or public id → structured Profile. Includes contact, experience, education, activity.
replaces /in/<slug> scraper
Enrich company linkedin-extract-company
Domain or URL → structured Company. Industry, size, headcount series, posts.
replaces /company/<slug> scraper
List employees linkedin-search-company-employees
Filter by role, seniority, function, location. Stable cursor — no page-N hopping.
replaces /company/<slug>/people scraper
People search linkedin-search-people
Sales-Navigator-aligned filters. POST a query, page through, get typed Profile rows.
replaces /search/results scraper
Post activity linkedin-extract-people-post-activity
Last-30-day posts, reactions, comments for a profile. Deduped, normalized.
replaces /in/<slug>/recent-activity scraper
Sales Nav search salesnavigator-search-people
Lead search with the full SN filter set. Saved-search ID or inline query both supported.
replaces Sales Nav DOM extraction
// This is a REST API, not a scraper
POST a URL. Get JSON. That is the whole move.
A scraper returns HTML. An API returns JSON you can ship. Copy either snippet and run it with your key.
# POST a profile URL, get typed JSON — not HTML
curl -X POST https://api.edges.run/v1/actions/linkedin-extract-people/run/live \
-H "X-API-Key: $EDGES_API_KEY" \
-H "Content-Type: application/json" \
-d '{"input":{"linkedin_profile_url":"linkedin.com/in/jane-doe"}}'// npm i @edgesrun/sdk
import { Edges } from "@edgesrun/sdk"
const edges = new Edges({ apiKey })
const { data } = await edges.linkedin.extractPeople({
input: { linkedin_profile_url: "linkedin.com/in/jane-doe" }
})p50 1.2s · p99 2.4s on a live read · same runner as every other action
// Workflows
Common jobs people describe as LinkedIn scraping.
Expand a workflow to see how teams usually implement it — and how an API fits.
Account executives and SDRs often start with a named list of companies or titles and need firmographics, technographics hints, and trigger events to prioritize touches. A classic LinkedIn scraper workflow might dump HTML into a Python notebook; a production version dedupes domains, normalizes seniority, attaches CRM IDs, and respects per-seat governance. Edges keeps that logic in your stack while supplying consistent inputs from LinkedIn-shaped actions—so reps spend time on conversations, not CSV cleanup.
// Fully-loaded cost · sample
“Cheap” scrapers stop being cheap at scale.
A representative profile-enrichment workload at 50k records / month. Sticker price isn't the whole story — engineering time and infra add up.
| Line item | Self-built scraper | Generic scraping API | Edges |
|---|---|---|---|
| Per-call API or compute | $0.0024 (Lambda + parse) | $0.012 / req | 1 credit · $0.02999 |
| Proxy / residential IP pool | $400 / mo | included | included |
| LinkedIn accounts (warm) | $80 / mo · ×3 | your accounts | managed pool |
| Engineering on-call | ~ 22 h × $120/h = $2,640 | ~ 8 h × $120/h = $960 | ~ 1 h × $120/h = $120 |
| Infra (cron, queues, retries) | $220 / mo | $80 / mo | included |
| 50k profiles / month, fully loaded | ~ $3,620 | ~ $1,800 | ~ $1,620 |
// vs other LinkedIn data tools
Latency, coverage, price, and whether it still runs.
Proxycurl is on this table because a lot of teams comparing scrapers are replacing an enrichment API that shut down in July 2025.
| Tool | Shape | Latency | Coverage | Pricing | Status |
|---|---|---|---|---|---|
| Edges | LinkedIn Actions API | p50 1.2s · p99 2.4s | 70+ actions · 750M profiles | $39.99–$1.49 / 1k credits | Live |
| Bright Data | Proxy + datasets | Unlocker / dataset pull | Multi-site · LinkedIn is one dataset | Dataset / bandwidth contracts | Live |
| Proxycurl | Enrichment API | — | Person + company lookups | Plans no longer sold | Offline July 4, 2025 |
| Phantombuster | Browser phantoms | Scheduled cloud run | Phantom catalog · multi-network | Per execution slot | Live |
| Apify | Actor marketplace | Actor-dependent | Third-party LinkedIn actors | Actor fees + proxy | Live |
| Unipile | Unified inbox | Messaging-first | DMs / channels · thin LinkedIn data | Seat / channel | Live |
// FAQ
Scraper questions, answered.
Migration patterns, ToS posture, and reliability commitments documented in detail.
What is a LinkedIn scraper?
People usually say “LinkedIn scraper” when they want to copy profile, company, or activity data from LinkedIn into a spreadsheet, CRM, or database—often with browser automation, extensions, or headless scripts. The term covers everything from one-off exports to large-scale pipelines. Edges is not a generic HTML scraper; it is a LinkedIn Actions API that returns structured JSON so you can automate workflows without maintaining fragile page parsers.
Is a LinkedIn scraper the same as a LinkedIn API?
Not exactly. A typical scraper reads whatever the website renders and breaks when layouts change. An API—like Edges—exposes consistent endpoints, schemas, and authentication so your integrations stay stable. Many teams outgrow scrapers precisely because engineering time goes to fixing selectors instead of shipping product.
Why do LinkedIn scraper setups stop working?
Public sites change markup, add friction for automated browsers, and throttle suspicious traffic. Scrapers also depend on cookies, sessions, and residential proxies that are expensive to operate. That combination means broken jobs, stale data, and on-call alerts. A unified API reduces that operational surface by design.
Who uses Edges instead of a traditional LinkedIn scraper?
Revenue teams building lead lists, recruiters sourcing candidates, growth teams enriching CRM records, and engineers wiring LinkedIn data into internal tools. If you need repeatable jobs, webhooks, and predictable JSON—not one-off HTML dumps—an API-first platform is usually a better fit.
Can Edges replace my enrichment or prospecting stack?
Edges focuses on running LinkedIn Actions through one API: people, companies, signals, and engagement-style workflows depending on what you enable in your account. Compare coverage in the action library and docs, then map endpoints to your use case. For pricing and limits, see the pricing page or talk to sales for enterprise volumes.
How do I get started with Edges?
Book a demo to walk through your workflow, read the documentation at docs.edges.run for authentication and endpoint reference, and explore the library of actions on edges.run/library. Your team can prototype against the API and scale usage as you harden pipelines.
Is Edges compliant with LinkedIn’s terms?
You are responsible for how you use any platform that touches LinkedIn data. LinkedIn’s terms and policies apply to your activity. Edges is built for teams that want a professional, API-oriented integration path rather than ad-hoc scraping—but you should review applicable terms and your legal guidance before deploying at scale.
Where can I see pricing and SLAs?
Public plans and calculators live on edges.run/pricing. For dedicated infrastructure, security reviews, and custom SLAs, see edges.run/enterprise and schedule a conversation with the team.
How fast is Edges compared to a LinkedIn scraper?
A live profile extract is p50 1.2s · p99 2.4s. That is a blocking HTTP call, not a queued browser job. Scrapers and phantoms add proxy rotation, rendering, and parse time on top of the page fetch — and they break when LinkedIn ships a UI change. If your product needs the record while a user is waiting, an action is the right primitive.
How does Edges pricing compare per profile?
Credits from $39.99 down to $1.49 per 1,000 records. linkedin-extract-people costs 1 credit per profile. At 50,000 profiles a month that sits in the $15.99 per 1,000 band — about $800 before identity fees — and Sales Navigator or signals share the same balance. Self-built scrapers look cheaper per call until you add proxy, accounts, and on-call; the fully-loaded sample on this page is the honest comparison.
Proxycurl shut down — is Edges the replacement?
For person and company lookups, yes. Proxycurl went offline on July 4, 2025 after LinkedIn Corp. v. Nubela. Map GET /api/v2/linkedin to linkedin-extract-people and the company endpoint to linkedin-extract-company. See the Proxycurl comparison for the full endpoint map and a one-day migration checklist.
The cleanest LinkedIn integration you'll ever ship.
Trade selectors for endpoints. Replace a scraper in one sprint.