# EasyData > A LinkedIn data enrichment API. Send identifiers - profile URLs, company > URLs, post URNs, or a pasted Sales Navigator search URL - and get structured > JSON back. Everything is a batch, including a batch of one, and you are billed > per record that resolves: a failure costs nothing. Authentication is one header: `X-API-Key: `. The base URL is `https://api.easydata.win/v1`. Every data endpoint answers 202 with a `batch_id`; results are read from `GET /batches/{id}/results`, which is cursor-paged and readable while the batch is still processing. Every data endpoint also answers at `/sync`, for a lookup that has to happen inside your own request handler. It takes ONE entity - a `target` field, not a `targets` array - creates the same batch under it, drains it before replying and hands back one `result`, and it costs double. It returns at most one upstream page of a search and accepts no webhooks: the record is already in your hands. What a credit costs in money is published and 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. There is no plan, no renewal date and no overage charge; the allowance, the rate limits and the key are agreed with sales rather than bought self-serve. ## Start here - [All operations and prices](https://easydata.win/): Every operation in one table with its credit cost, the one rule those costs are derived from, and a first call you can paste. - [Pricing](https://easydata.win/pricing): What a credit costs in money - the volume ladder from $3 per 1,000 credits down to $1, with worked examples. ## Guides - [Quickstart](https://easydata.win/docs/quickstart): Your first batch, submitted and read, in two calls. - [SDKs and tools](https://easydata.win/docs/sdks): Official clients for Python, TypeScript and Go, and an MCP server for agents. - [Authentication](https://easydata.win/docs/authentication): One header, on every request - plus scopes and expiry, so a leaked key is bounded. - [What a credit is](https://easydata.win/docs/credits): One rule, and every price on this site derived from it. - [The batch model](https://easydata.win/docs/batches): Everything is a batch, including a batch of one. - [Streaming results](https://easydata.win/docs/streaming): The same cursor over a held connection, for a client that cannot receive a webhook. - [Synchronous requests](https://easydata.win/docs/sync): One entity, answered in the response, at twice the price. - [Errors](https://easydata.win/docs/errors): One envelope, a fixed vocabulary, and one promise about billing. - [Rate limits](https://easydata.win/docs/rate-limits): Four ceilings, the headers that report them, and how to back off. - [Finding email addresses](https://easydata.win/docs/emails): Set find_emails and every person you scrape comes back with a work email address beside them, for a flat +4. - [Webhooks](https://easydata.win/docs/webhooks): Six events - started, each row, completed, failed, and two about credits - signed two ways and retried with backoff. ## API reference - [API reference index](https://easydata.win/docs/api): Every operation with its method, path and credit cost, and the schemas they return. - [Enrich profiles](https://easydata.win/docs/api/profiles-enrich): The profile record for each target. One request, one credit. - [Enrich profiles, detailed](https://easydata.win/docs/api/profiles-enrich-detailed): The profile record plus the sections you tick: counts, role detail, skills, interests, recommendations. One credit, +0.5 each. - [Profile activity](https://easydata.win/docs/api/profiles-activity): Posts and reposts, comments and reactions in one record. - [Profile posts](https://easydata.win/docs/api/profiles-posts): A person's posts and reposts, up to 100. - [Profile comments](https://easydata.win/docs/api/profiles-comments): A person's comments, each with the post it was left on. - [Profile reactions](https://easydata.win/docs/api/profiles-reactions): A person's reactions, each with the post it was left on. - [Enrich companies](https://easydata.win/docs/api/companies-enrich): The company record for each target. One request, one credit. - [Enrich posts](https://easydata.win/docs/api/posts-enrich): The post record for each target: author, body, media, engagement. - [Sales Navigator people search](https://easydata.win/docs/api/sales-search-people): Paste a search URL; we paginate it. 50 credits a request of 100 rows. - [Sales Navigator search across a company list](https://easydata.win/docs/api/sales-search-employees): One people search, run once per chunk of your company list. - [Sales Navigator company search](https://easydata.win/docs/api/sales-search-companies): The same, against an account search. Ceiling 1,000 rows. - [Break a search past the 2,500-row ceiling](https://easydata.win/docs/api/sales-search-deep): One search too big for LinkedIn, covered by many smaller ones. - [Approve a planned batch](https://easydata.win/docs/api/batches-approve): Releases a search plan and lets the harvest run. - [List batches](https://easydata.win/docs/api/batches-list): Newest first, filterable by status, operation and external_id. - [Batch progress](https://easydata.win/docs/api/batches-get): Counters and status. Free, and safe to poll. - [Read results](https://easydata.win/docs/api/batches-results): Cursor-paged, and readable while the batch is still processing. - [Cancel a batch](https://easydata.win/docs/api/batches-cancel): Stops what has not started. Keeps what has landed. - [Account](https://easydata.win/docs/api/account-get): Allowance, rate limits and where completions are delivered. - [Update account](https://easydata.win/docs/api/account-update): Set the default callback URL and signing secret. - [Usage](https://easydata.win/docs/api/usage): A day-by-operation rollup, filterable by external_id. ## Schemas - [Profile](https://easydata.win/docs/schemas/profile): A person, as profiles/enrich returns them. The sample below is the fullest form - what profiles/enrich/detailed returns with every section ticked - because this page lists what the record can carry; the two counts, six of the position fields, skill_details, interests and recommendations each cost a section and are absent without one. - [MonthDay](https://easydata.win/docs/schemas/month-day): Month and day of birth, nothing else. LinkedIn never returns a birth year, so this is the whole fact rather than a partial date - contrast with PartialDate, which does carry a year. - [Certification](https://easydata.win/docs/schemas/certification): One certification or licence the member added. - [Language](https://easydata.win/docs/schemas/language): One language the member listed, and how well. - [Skill](https://easydata.win/docs/schemas/skill): One skill as the profile's skills SECTION carries it, which is the flat skills list plus the two things that make it worth buying: who endorsed it and what the member attached it to. - [Interest](https://easydata.win/docs/schemas/interest): One thing a member follows. All five categories render as the same row on LinkedIn, which is why category is the field that tells them apart. - [Recommendation](https://easydata.win/docs/schemas/recommendation): One written recommendation. Which way round it runs is the fact about it, so direction and name are read together: name is always the OTHER person. - [ProfileStub](https://easydata.win/docs/schemas/profile-stub): A person as a Sales Navigator search card describes them. - [Company](https://easydata.win/docs/schemas/company): A company, as companies/enrich returns it. - [CompanyStub](https://easydata.win/docs/schemas/company-stub): A company as briefly as we know it: a search card, or a company another company names. - [EmailFindings](https://easydata.win/docs/schemas/email-findings): A work email lookup for one person. An object rather than a bare string, because an address is the end of a process that can succeed, half-succeed, honestly fail, or never have started. - [EmailCandidate](https://easydata.win/docs/schemas/email-candidate): One address that was generated and put to the mail server. - [Position](https://easydata.win/docs/schemas/position): One role at one company. - [Education](https://easydata.win/docs/schemas/education): One school. - [PartialDate](https://easydata.win/docs/schemas/partial-date): A date LinkedIn only partly knows. - [Address](https://easydata.win/docs/schemas/address): A company's headquarters, component by component. - [Location](https://easydata.win/docs/schemas/location): One of a company's offices, with the group LinkedIn files it under. - [SearchPage](https://easydata.win/docs/schemas/search-page): The data of one Sales Navigator result entry: one upstream page. - [Pagination](https://easydata.win/docs/schemas/pagination): Where one page of a search stands. - [Batch](https://easydata.win/docs/schemas/batch): A submission and its progress. - [BatchResultEntry](https://easydata.win/docs/schemas/batch-result-entry): One delivered result. - [Account](https://easydata.win/docs/schemas/account): Your allowance, credit balance, limits and callback settings. - [Usage](https://easydata.win/docs/schemas/usage): A rollup by day and operation. - [Error](https://easydata.win/docs/schemas/error): The failure envelope. Every failure, without exception. - [Meta](https://easydata.win/docs/schemas/meta): The second half of every success envelope. camelCase, where data is snake_case. - [ProfileActivity](https://easydata.win/docs/schemas/profile-activity): The three activity kinds in one record: posts and reposts, comments and reactions. profiles.posts, profiles.comments and profiles.reactions each return this same shape, with the other two arrays absent. - [ActivityPartial](https://easydata.win/docs/schemas/activity-partial): Which kinds were requested and could not be read. - [Post](https://easydata.win/docs/schemas/post): A post or repost, as profiles.posts and profiles.activity return it. posts.enrich returns this same record by URL or bare urn, with comments included. - [PostComment](https://easydata.win/docs/schemas/post-comment): A comment on a post, with its author. - [PostAuthor](https://easydata.win/docs/schemas/post-author): A feed actor is these four fields. - [PostMedia](https://easydata.win/docs/schemas/post-media): One image, video or document attached to a post. - [PostArticle](https://easydata.win/docs/schemas/post-article): The link preview on a post that shares an external article. - [PostMention](https://easydata.win/docs/schemas/post-mention): One person or company @mentioned in a post. - [ReactionCount](https://easydata.win/docs/schemas/reaction-count): One reaction type and its tally, from the breakdown behind reaction_count. - [ActivityComment](https://easydata.win/docs/schemas/activity-comment): One comment and the post it was left on. - [ActivityReaction](https://easydata.win/docs/schemas/activity-reaction): One reaction and the post it was left on. - [ActivityTargetPost](https://easydata.win/docs/schemas/activity-target-post): The post a comment or reaction was left on, as a stub. ## Machine-readable - [OpenAPI 3.1](https://easydata.win/openapi.yaml): The full specification. Every reference page is generated from it. ## Contact - [Pricing](https://easydata.win/pricing): What a credit costs. Buy credit packs in the console, or agree an allowance with us. - [Talk to sales](https://easydata.win/contact-sales): For volumes past the published ladder, or a rate limit agreed rather than bought. - [Refund policy](https://easydata.win/refunds): Unspent credits refundable within 14 days; spent credits are not.