Leadsforge Public API

Leadsforge API and its rate limits

API docs: https://api.leadsforge.ai/public/swagger/index.html

We’ve opened up Leadsforge with a public API, giving you programmatic access to sourcing and enrichment!
What’s Included:

  • Sourcing: ICP filters with pagination; output matches CSV download (Locations split into City & Country).

  • Enrichment:

    • Single & bulk enrichment (max 500 per batch; rest queued).

    • Covers email, LinkedIn, and phone.

    • LI URL only returned if enriched.

  • Credits: Same system as in-app. Credits reserved upfront; charged only for successful results.

  • API Key: At account level, covering credits for the whole account.

  • Limits: Low initial rate limits to prevent abuse; will scale up as we monitor performance.

This makes it easier to integrate Leadsforge directly into your workflows!

Rate limits for public endpoints:

  • POST /public/v1/search – 20 requests per minute per account (i.e. per accountID), not per API key.

  • GET /public/v1/balance – 60 requests per minute per API key.

  • GET /public/v1/enrichment/jobs/{jobID} – 60 requests per minute per API key.

  • GET /public/v1/enrichment/jobs/{jobID}/results – 60 requests per minute per API key.
    POST /public/v1/search/count – 20 requests per minute per accountID (same bucket as /search).

  • GET /public/v1/search/filters/* (industries, seniorities, departments, company-types, funding-types, revenue-ranges) – 60 requests per minute per API key.

  • GET /public/v1/enrichment/jobs (list, no job ID) – 60 requests per minute per API key.

  • POST /public/v1/enrichment/email and POST /public/v1/enrichment/phone (synchronous, single-record lookups) – 120 requests per minute per API key. Don't confuse these with the plural async bulk endpoints above (emails/phones/linkedin), which have no per-minute limit.

  • POST /public/v1/enrichment/{emails|phones|linkedin} –no rate limit, but there is a cap on the number of active jobs per account. If this limit is exceeded, the API returns 429 "active enrichment jobs limit reached".

  • POST /public/v1/company-followers/search – 10 requests per minute per accountID (the lowest limit in the whole API).

  • GET /public/v1/company-followers/jobs, /jobs/{id}, /jobs/{id}/results – 60 requests per minute per API key.

  • GET /public/v1/company-followers/filters/* (countries, states, job-titles, departments, levels) – 60 requests per minute per API key.

  • POST /public/v1/lookalikes/search – 20 requests per minute per accountID.

  • POST /public/v1/lookalikes/preview – 60 requests per minute per API key.

  • GET /public/v1/lookalikes/filters/* (seniorities, departments, employee-ranges, locations) – 60 requests per minute per API key.

The job accepts no more than 500 personIDs. The validator will return 400 if more are sent. There is no automatic division of β€œthe rest into a queue” β€” you need to send several requests for less than 500. When a per-minute rate limit is triggered, the X-RateLimit-Limit/Remaining/Reset and Retry-After headers are given. The active-enrichment-jobs-limit 429 above is different β€” it comes from the per-account concurrency check, not the rate limiter, so it does not include these headers.

Did this answer your question?
😞
😐
😁