Fresh LinkedIn data, in bulk, through one API.

Win with EasyData

EasyData turns identifiers into records. You send profile URLs, company URLs or post URNs; we scrape them live and hand back structured JSON.

There is nothing to configure. No proxies, no workers, no lists, no campaigns - the pool that answers your requests is ours to run.

Your first call

Everything is a batch, including a batch of one. You submit and you read its results - one shape, from a single profile to fifty thousand, with no ceiling to discover.

Submit
curl -X POST https://api.easydata.win/v1/profiles/enrich \
  -H "X-API-Key: $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"targets": ["https://linkedin.com/in/satyanadella"]}'
202 Accepted
{
  "data": {
    "batch_id": "afec9131-080b-4b96-b3bb-726249e4bbf8",
    "operation": "profiles.enrich",
    "status": "queued",
    "total": 1,
    "recommended_poll_ms": 2000
  },
  "meta": { "requestId": "req_8f2ka91x" }
}

Then read it, as many times as you like while it fills in:

Poll
curl "https://api.easydata.win/v1/batches/afec9131-080b-4b96-b3bb-726249e4bbf8/results" \
  -H "X-API-Key: $API_KEY"

When something is waiting on the answer, add /sync to the same path and send one target instead of a targets array: the record comes back in the response instead of from a poll, for twice the credits. Synchronous requests is the whole of it.

Authentication

One header, on every request.

HTTP
X-API-Key: pk_live_...

Base URL: https://api.easydata.win/v1

What a credit is

A direct fetch costs what it costs us

One credit per request we make to LinkedIn to answer you. A complete company record is one fetch, so it is 1. So is a profile. The optional sections of the detailed profile endpoint - follower and connection counts, and the full detail of every role - are the one place we charge less than the rule: each is a request and each is 0.5, because a section is an extra on a record you are already paying a credit for.

An answer you cannot wait for costs double

Every operation also answers one target at /sync, in the response rather than in a later poll. It outranks every queued batch for a worker and holds one open for the length of your request, which is the opposite of what makes the batch path cheap to run - so it is exactly twice the number above it, never a separate price.

A search row costs half

Sales Navigator hands us 100 rows per request, and the request is what you are billed for: 50 credits, which is those 100 stubs at the half credit a stub is worth. The request is the unit because the request is what we spend and what LinkedIn throttles, so a page that comes back short or empty costs the same as a full one. max_results rounds up to a whole request and you keep the overflow.

A failure costs nothing

A failed fetch produced nothing, so there is nothing to bill. This is not a separate promise bolted on top - it falls out of what a credit is.

What a credit costs

A credit is a unit of upstream work. What one costs in money falls with the size of the order - $3 per 1,000 credits at 10,000, down to $1 per 1,000 at 1,000,000.

10,000 credits$3 per 1,000
50,000 credits$2.50 per 1,000
100,000 credits$2 per 1,000
250,000 credits$1.50 per 1,000
500,000 credits$1.25 per 1,000

The full ladder, with worked examples

All operations

Profiles

A profile URL, a public identifier, a member URN or a Sales Navigator slug - all four reach the same record.

MethodPathCreditsWhy
POST/v1/profiles/enrich 1 2 at /syncone profile fetch
POST/v1/profiles/enrich/detailed 1 2 at /syncone profile fetch, plus one per section you asked for at half each
POST/v1/profiles/activity 4 8 at /sync1 profile + posts and reposts + comments + reactions, 100 of each
POST/v1/profiles/posts 2 4 at /sync1 profile + 1 feed
POST/v1/profiles/comments 2 4 at /sync1 profile + 1 feed
POST/v1/profiles/reactions 2 4 at /sync1 profile + 1 feed

Companies

A company URL, a universal name or a numeric id - all three reach the same record.

MethodPathCreditsWhy
POST/v1/companies/enrich 1 2 at /syncone request to LinkedIn, whichever identifier you send

Posts

A post by URN or URL.

MethodPathCreditsWhy
POST/v1/posts/enrich 1 2 at /sync1 fetch

Sales Navigator

Paste a Sales Navigator search URL and a max_results. We paginate it. We do not build the query, resolve facet ids or guess what you meant - with one exception: hand the people search a list of companies and we will chunk it into as many searches as the filter needs.

MethodPathCreditsWhy
POST/v1/sales/search/people 50 100 at /synca request brings 100 stubs, and a stub is worth half a record
POST/v1/sales/search/employees 50 100 at /synca request brings 100 stubs, and every chunk is at least one request
POST/v1/sales/search/companies 50 100 at /synca request brings 100 stubs, and a stub is worth half a record
POST/v1/sales/search/deep 50 100 at /synca count is one request and a page is one request

Batches

Everything is a batch, including a batch of one. Results stream: you can read them while the batch is still processing.

MethodPathCreditsWhy
POST/v1/batches/{id}/approve free
GET/v1/batches free
GET/v1/batches/{id} free
GET/v1/batches/{id}/results free
POST/v1/batches/{id}/cancel free

Account

What you have left, what you spent, and where completions go.

MethodPathCreditsWhy
GET/v1/account free
PATCH/v1/account free
GET/v1/usage free

Guides

Schemas

One page per record, field by field - what it is, and what it is not.

Machine-readable

Get in touch

One email, and we size it with you

The rate per 1,000 credits is published; the allowance, the rate limits and the key are not self-serve. Tell us roughly what you want to run and we size it with you in one reply.

  • Which operations

    Profiles, companies, posts, Sales Navigator searches - whichever ones you will actually call.

  • How many records a month

    A rough ceiling is enough. One credit is one request to LinkedIn, so the two convert.

  • How you want results

    Polled from the results cursor, delivered to a webhook, or both.