Pricing & credits

Flat per-request credits. Empty rows are free. No annual commit.

LinkFetch is metered in credits. Pricing is flat per request — a call returning one row and a call returning fifty rows cost the same. We never debit per result and never split a single request into multiple billing units.

Credit cost per endpoint

EndpointCreditsNotes
GET /v1/profiles5One profile, typed and provenance-stamped
GET /v1/profiles/:slug/posts3Recent activity for one person
POST /v1/profiles/ingest5Extension write-path; same cost as the read
GET /v1/companies/:slug3One company record
GET /v1/companies/by-id/:id3Same shape, addressed by numeric ID
GET /v1/companies/:slug/posts3One page of the company timeline
GET /v1/companies/:slug/employees5Flat per page, not per employee
GET /v1/posts/:id3One post + counts + reaction breakdown
GET /v1/posts/:id/reactions2One page of reactors
GET /v1/groups/:id3One group
GET /v1/groups/:id/members3One page of members
GET /v1/search/people5Flat per query, not per hit
GET /v1/search/companies3Same
GET /v1/search/groups2Same
GET /v1/search/posts2Same
GET /v1/jobs1One filtered page from our dataset
GET /v1/jobs/:id1One job detail row
GET /v1/jobs/by-url1Same
GET /v1/locations/search1Geo-id resolution
POST /v1/outbound/connections10LinkedIn-side weekly cap; high-risk
POST /v1/outbound/messages10Same; 1st-degree only
POST /v1/outbound/posts/:id/reactions5Public engagement
POST /v1/outbound/posts/:id/comments5Same
POST /v1/outbound/follows/member5Same
POST /v1/outbound/follows/company5Same
POST /v1/outbound/posts/:id/save2Self-state change
Empty response0Zero rows are never charged

These are list prices; Scale-tier customers get custom bands. The meta.credits_charged field on every response is authoritative — read it instead of hardcoding.

Why "flat per request"

Per-result billing breaks two things you actually want:

  1. Predictable cost in agent loops. An agent that runs a search and iterates through 50 hits should pay the same as one that gives up after 5 — otherwise your bill swings on the model's reasoning step.
  2. Honest cache pricing. Cache hits cost the same as cache misses, because if cache hits were cheaper, the incentive is to depend on stale data. The right answer is to charge once and let you cache yourself if you don't need fresh.

Empty rows are free

If a profile URL resolves to no data, or a search returns zero hits, we don't charge. This is contractual — if you're getting charged for 404s, email info@linkfetch.io and we'll refund plus double the difference.

How credits are debited

Per-request, atomically, in a Postgres transaction alongside the cache write. The response includes:

  • meta.credits_charged — the integer cost of this call
  • X-Credits-Remaining header — your balance after the call
  • A row in credit_ledger — visible on the usage page

Insufficient balance returns 402 insufficient_credits with a link to top up; we never silently overdraft.

Tiers

TierPriceWhat you get
Free$0$5 credit (≈1,000 jobs lookups), 1 req/sec, community support
Starter$29/mo~6,000 lookups, 10 req/sec, email support
Pro$99/mo~25,000 lookups, 50 req/sec, webhooks, GDPR + CCPA posture
ScaleCustomCustom throughput, private MCP cluster, DPA, SSO, invoice

Full table at linkfetch.io/#pricing.

Subscriptions (Jobs dataset)

The Jobs dataset is also available as a separate flat-rate SKU for teams that want bulk access:

  • Monthly Snapshot — $49, one-off, last 30 days
  • Subscription — $89/mo, real-time webhooks + daily + monthly rollups
  • Custom — historical backfill + DPA, talk to us

Details at linkfetch.io/datasets/jobs.

Billing

Credits and subscriptions are processed by Paddle as Merchant of Record. Upgrade, downgrade, or cancel any time on the billing page. Refunds on cancellation are pro-rated to the day.