Skip to content
HappyFetch

The LinkedIn company data API

Fetchas JSON.

Type a company and press the ball. Its full profile comes back as JSON: size, industry, headquarters, website and 14 more fields. A fresh lookup by LinkedIn company URL costs a tenth of a cent on our smallest pack, and half that from our cache.

In the cache right now:and 0 more
Start free with 200 creditsRead the quickstart

10,000 lookups by LinkedIn company URL, or 5,000 by website domain, for $10. No subscription. 200 free credits, no card.

POST /v1/company

curl https://api.happyfetch.net/v1/company --max-time 120 \
  -H "Authorization: Bearer $HAPPYFETCH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://www.linkedin.com/company/stripe/"}'
x-request-id
Ties this call to its charge and to the data it returned. Quote it and we find it.
x-credits-charged, x-credits-remaining
What the call cost and what's left, on every billed call.
x-cache, age
Whether our cache answered, and how old the data is in seconds.
The body
Every field is always present, and null when it isn't known.
HTTP/1.1 200 OK
x-request-id: b54a47f0-a532-4798-8500-78bffc17b8f0
x-credits-charged: 1
x-credits-remaining: 199
x-cache: HIT
age: 847
{
  "data": {
    "logo": "https://media.licdn.com/dms/image/v2/D560BAQE2ZfJyfn-VCg/company-logo_200_200/B56ZlyKwpUKIAI-/0/1758557047806/stripe_logo?e=2147483647&v=beta&t=En4Hm6NDGbDTYCoOQ0Ko5Ne2gylx0WRb0yL2GlOeXBQ",
    "name": "Stripe",
    "phone": null,
    "tagline": "Help increase the GDP of the internet.",
    "industry": "Technology, Information and Internet",
    "foundedOn": {
      "year": 2010
    },
    "locations": [
      {
        "city": "South San Francisco",
        "state": "California",
        "country": "US",
        "street1": "354 Oyster Point Blvd",
        "street2": null,
        "postalCode": "94080"
      }
    ],
    "linkedInId": "2135371",
    "websiteUrl": "https://stripe.com",
    "description": "Stripe builds programmable financial services. Millions of companies—from the world’s largest enterprises to the most ambitious startups—use Stripe to accept payments, grow their revenue, and accelerate new business opportunities. Headquartered in San Francisco and Dublin, the company aims to increase the GDP of the internet.",
    "headquarter": {
      "city": "South San Francisco",
      "country": "US",
      "street1": "354 Oyster Point Blvd",
      "street2": null,
      "postalCode": "94080",
      "geographicArea": "California"
    },
    "linkedInUrl": "https://www.linkedin.com/company/stripe",
    "specialities": [],
    "backgroundUrl": "https://media.licdn.com/dms/image/v2/D563DAQFt98MykXcktg/image-scale_191_1128/B56Z352EMMKIAY-/0/1778013193531/stripe_cover?e=2147483647&v=beta&t=UwiZWbPrYkD77DpQmZIjVuuqKMCfyZ-e-YcHE336MlY",
    "employeeCount": 16694,
    "followerCount": 1767046,
    "universalName": "stripe",
    "employeeCountRange": {
      "end": 10000,
      "start": 5001
    }
  },
  "meta": {
    "request_id": "b54a47f0-a532-4798-8500-78bffc17b8f0",
    "endpoint": "company",
    "credits_charged": 1,
    "credits_remaining": 199,
    "cache": {
      "status": "hit",
      "age_seconds": 847,
      "fetched_at": "2026-10-14T14:46:48.000Z",
      "max_age_seconds": 604800
    },
    "content_hash": "sha256:502b3c5d7198efbd93977f19c6351230f53f4c7150635645975f264a9b241696",
    "canonical": {
      "slug": "stripe",
      "id": "2135371"
    }
  }
}

In the cache right now

Real profiles, fetched once and answered from our cache since. Open any of them to see its complete response. With a key, any company page works; these just come back faster and cost less.

Companies in the demo cache, with their industry, size, headquarters and founding year
CompanyPeopleResponse
Stripestripe16,694

Your engineers will like the API. Your finance team will like the bill.

For the people who build with it

  • One call per company. Send a LinkedIn company URL, a slug or a website.
  • 18 fields, always present. A value is null when it isn't known, so your code never guesses.
  • Safe retries with Idempotency-Key. Error codes say whether retrying helps.
  • OpenAPI 3.1, with samples in cURL, JavaScript and Python. Your first call takes five minutes.

For the people who pay for it

  • From $0.50 per 1,000 by LinkedIn URL, $1.00 by website domain, on our biggest pack, and half that from our cache. One public price list.
  • Prepaid packs from $10. You can never spend more than you bought, and credits never expire.
  • Calls we can't complete are refunded in the same request. Rejected calls are never charged.
  • Every credit in your ledger points at the request that spent it, and every purchase comes with an invoice.

What comes back

Eighteen fields, and every one is always present. A value is null when it isn't available, so your code never has to guess whether a key exists. This is the whole shape, ready to paste into your code.

The canonical slug and numeric id come back too, so every form of the same company lands on one record in your system.

Field reference
TypeScript
interface Company {
  name: string | null;
  tagline: string | null;
  description: string | null;
  industry: string | null;
  websiteUrl: string | null;
  phone: string | null;
  logo: string | null;             // image URL
  backgroundUrl: string | null;    // cover image URL
  followerCount: number | null;
  employeeCount: number | null;    // the employee count on the company page
  employeeCountRange: { start: number | null; end: number | null } | null;
  foundedOn: { year: number | null } | null;
  headquarter: Address | null;
  locations: Location[];
  specialities: string[];
  universalName: string | null;    // canonical slug: changes when the company is renamed
  linkedInUrl: string | null;
  linkedInId: string | null;       // numeric id, as a string: your stable key
}

interface Address {
  street1: string | null;
  street2: string | null;
  city: string | null;
  geographicArea: string | null;
  postalCode: string | null;
  country: string | null;          // ISO 3166 code, like "US"
}

type Location = Omit<Address, "geographicArea"> & { state: string | null };

Start from a website

Most lead lists have a website, not a company page. Send the domain, or any URL on the site, and get the same profile back, with whether the company lists that website as its own.

A lookup by website domain costs 4 credits, or 2 credits from our cache. A domain with no company behind it (no website, or no LinkedIn company page) costs 4 credits, and nothing from our cache.

Domain lookup reference, with a complete response
curl https://api.happyfetch.net/v1/domain --max-time 120 \
  -H "Authorization: Bearer $HAPPYFETCH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"domain":"https://www.stripe.com/pricing"}'

Every credit points at a request

Your console keeps each call: what came in, whether the cache answered, what it cost and what came back. A call we can't complete is refunded in the same request, and the ledger shows both lines.

Quote the request id from any response and support sees the same page.

How billing works

Request details

9a80ddb0-0aed-41bc-9e48-a035c9388751

  1. Received

    With key production …7Qf2, no Idempotency-Key.

  2. Cache: fetched live

    Nothing usable was cached, so the data was fetched live.

  3. Charged 2 credits

    Ledger row 1,204, balance 20,198 after.

  4. The fetch didn't complete

    We couldn't get the data this time, so nothing is charged.

  5. Refunded 2 credits

    Automatic, in the same request. Ledger row 1,205.

  6. Answered 503

    The data couldn't be fetched right now. Refunded automatically; retry after Retry-After.

Request
POST /v1/company
Answer
503 blocked
Charged
2 credits
Refunded
2 credits
Net cost
0 credits

Ledger rows for this request

CauseChangeBalance
API call−220,198
Automatic refund+220,200

Web search, same key

Send a query and get the results back as JSON: a title, URL and snippet for every hit. A search costs 1 credit, fresh or from our cache.

Search reference, with a complete response
curl https://api.happyfetch.net/v1/search --max-time 120 \
  -H "Authorization: Bearer $HAPPYFETCH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"query":"stripe","max_results":5}'

Made for code that runs unattended

Safe retries, errors your code can act on, and a record of every credit. What matters when a job runs at night and nobody is watching.

Idempotency-Key
Retry after a timeout without paying twice. The retry gets the stored answer back.
X-Request-Id
On every response. It ties the call to its charge and to the data it returned.
RateLimit-*
Every authenticated response shows what's left of your budget. Past it, you get a 429 with Retry-After.
error.code
Stable codes that say whether retrying helps, each with its own entry in the docs.
max_age
Choose how fresh an answer must be, from anything we have cached to fetched right now. A free cache check tells you how old our copy is before you pay.
openapi.json
OpenAPI 3.1 with samples in cURL, JavaScript and Python. Generate a typed client in one command.

What 1,000 company profiles cost

Our biggest pack's price next to each vendor's lowest published price, for the same kind of lookup.

By LinkedIn company URL, compared with our $0.50 per 1,000

By LinkedIn company URL: each vendor's lowest published price per 1,000 next to ours
VendorTheir lowest price per 1,000Compared with ours
Renidly (formerly LinkdAPI)1M+ credit balance$2.505× ours
Enrich LayerUltra, yearly$7.7015× ours
Reverse Contact (with ScrapIn)200K-credit pack$9.0018× ours

By website domain, compared with our $1.00 per 1,000

By website domain: each vendor's lowest published price per 1,000 next to ours
VendorTheir lowest price per 1,000Compared with ours
CoresignalElite, yearly$4.504.5× ours
People Data LabsPro, yearly$80.0080× ours
LushaPremium, yearly$82.6783× ours

Ours is the price on our biggest pack. List prices from each vendor's public pricing page, checked on October 12, 2026. Some of them sell things we don't, like contact data. See the full comparison

Pricing

A fixed price per call, in credits. Buy a pack when you need more. Calls we can't complete are refunded in the same request, and rejected calls are never charged.

Full pricing
Price per call
CallPricePer 1,000 callsFrom our cacheConfirmed not found
Company, by LinkedIn URL2 credits$1.00 to $0.501 credit$0.50 to $0.25 per 1,0001 creditfree from our cache
Company, by website domain4 credits$2.00 to $1.002 credits$1.00 to $0.50 per 1,0004 creditsfree from our cache
Web search1 credit$0.50 to $0.251 credit$0.50 to $0.25 per 1,000n/a
Cache checkFreeFreen/an/a

Prices in USD, excluding VAT. Per 1,000 calls: from the Starter pack's rate down to the Business pack's. Pay by card; every purchase comes with an invoice, and credits never expire.

  • Starter

    $10

    20,000 credits

    $1.00 per 1,000 by LinkedIn URL · $2.00 by website domain

    Enough for 10,000 lookups by LinkedIn company URL, or 5,000 by website domain. Lookups from our cache cost half.

  • Growth

    $40

    100,000 credits

    $0.80 per 1,000 by LinkedIn URL · $1.60 by website domain

    Enough for 50,000 lookups by LinkedIn company URL, or 25,000 by website domain. Lookups from our cache cost half.

  • Scale

    $150

    500,000 credits

    $0.60 per 1,000 by LinkedIn URL · $1.20 by website domain

    Enough for 250,000 lookups by LinkedIn company URL, or 125,000 by website domain. Lookups from our cache cost half.

  • Business

    $500

    2,000,000 credits

    $0.50 per 1,000 by LinkedIn URL · $1.00 by website domain

    Enough for 1,000,000 lookups by LinkedIn company URL, or 500,000 by website domain. Lookups from our cache cost half.

What each outcome costs

Each answer carries its request id and what it cost, and every line in your ledger points at the request that caused it. Every error has a stable code, listed with its billing in the error reference.

What each outcome costs
OutcomeCost
A company profile or a completed searchThe call's price; lookups cost less from our cache
A confirmed "no such company"1 credit by LinkedIn company URL, 4 by website domain; free from our cache
We couldn't complete the callRefunded automatically
Rejected before any workNever charged

Questions

What does a lookup cost?
A lookup by LinkedIn company URL costs 2 credits, or 1 credit from our cache; a confirmed not-found costs 1 credit, and nothing from our cache. A lookup by website domain costs 4 credits, or 2 credits from our cache. A domain with no company behind it (no website, or no LinkedIn company page) costs 4 credits, and nothing from our cache. A web search costs 1 credit, fresh or from our cache. Credits come in packs, starting at $10 for 20,000 credits (USD, VAT excluded).
How can it be this cheap?
We focus on company data. Popular companies come from our cache, which costs us less, so cached lookups cost you less too. And there's no sales team or annual contract to pay for.
When am I charged?
Only for completed calls: a company profile, a completed search (even with zero results), or a confirmed not-found (1 credit by LinkedIn company URL, 4 by website domain), which is free when the answer comes from our cache. If we can't complete a call, the charge is refunded automatically in the same request. Invalid input, authentication errors and rate limits are never charged.
Do credits expire?
No. Credits stay in your workspace until you use them. There's no subscription, nothing renews, and you can never spend more than you bought.
Can I get an invoice with our VAT number?
Yes. Every purchase comes with an invoice. Add your company details and VAT number at checkout, and the invoice, with a PDF, is in the console next to the purchase.
How fresh is the data?
As fresh as you ask for. Every answer says whether it came from our cache and how old it is. Choose the oldest answer you accept, of any age, or ask for a fresh fetch every time.
Where does the data come from?
From LinkedIn company pages, fetched when you ask and kept in our cache for repeat lookups.
What don't you sell?
We don't sell email addresses, phone numbers or contact lists.
Is there a free trial?
Yes. You get 200 credits when you verify your email. No card needed.

Your first call in five minutes

  1. Create an account

    Verify your email and 200 credits land in your workspace. No card needed.

  2. Create an API key

    In the console, under API keys. It's shown once, so keep it in an environment variable.

  3. Make the call

    Copy the request at the top of this page, or follow the quickstart in your language.