API review

Forager API review

B2B people, company and job data API (person/role search, work email, personal email, mobile phone, reverse lookups, company search, web technologies) plus an annual bulk data feed via S3, GCS or Snowflake. Best for mobile phone lookup from a LinkedIn slug or Forager person id, as the first step of a phone waterfall.

Verified 25 Oct 2026 · 21 endpoints listed

Disclosure. OneGTMLab works with Forager.

What a call costs

The actions you pay for, as Forager prices them in credits.

ActionCostPer
Mobile phone lookup (successful)15 credits = $0.33 Starter / $0.29 Growth / $0.23 Pro monthly; $0.30 / $0.26 / $0.21 yearlyper number returned
Work or personal email lookup (successful)5 credits = $0.11 Starter / $0.10 Growth / $0.08 Pro monthly; $0.10 / $0.09 / $0.07 yearlyper email returned
Reverse email search5 creditsper request
Reverse phone search15 creditsper request
Person details lookup / person role search / organization search / org technologies lookup1 creditper request
Job search2 creditsper request
Credit-card paymentssurcharge up to 3% (none on ACH, wire or debit card)per payment

Pricing, plan by plan

US dollars, as Forager's pricing page shows them on 25 Oct 2026. Monthly and annual billing are shown apart.

Free tier 'Start Free' sign-up is offered on the homepage, but no free credit amount is published on the pricing page or in the docs

Starter

$50/mo

billed monthly

$45/mo

billed annually

2,250 API credits/month (27,000/year upfront on yearly); up to 150 mobiles or 450 emails a month

API included
Plan details

Credits roll over on monthly billing; higher volume via sales call

Growth

$100/mo

billed monthly

$90/mo

billed annually

5,250 API credits/month (63,000/year); up to 350 mobiles or 1,050 emails a month

API included
Plan details

Credits roll over; higher volume via sales call

Pro

$250/mo

billed monthly

$225/mo

billed annually

16,200 API credits/month (194,400/year); up to 1,080 mobiles or 3,240 emails a month

API included
Plan details

Credits roll over; enterprise plans via sales call

Rate limits

No numeric rate limits are published.

More on limitsLess

The OpenAPI spec says only that the single v2 work-email endpoint 'is rate limited for interactive use' and that a Retry-After header is sent while a job is not terminal.

How to get an API key

Forager uses API key. The steps below follow Forager's own docs.

  1. Create a Forager account. API access starts on the Starter plan.
  2. Sign up at app.forager.ai, open the API section, create and copy a key.
  3. Send it with every request: header X-API-KEY; the numeric account_id is part of every datastorage path.
  4. Make a first call: Search people by role: title, description, current flag, start/end dates, years in role, name, headline, skills, locations, industries, organizations. Keep the key in an environment variable, never in the command.
    curl -X POST "https://api-v2.forager.ai/api/{account_id}/datastorage/person_role_search/" \
      -H "Content-Type: application/json" \
      -d '{}'

Where the docs live

WhatWhere
Documentationdocs.forager.ai
API referencedocs.forager.ai/openapi
OpenAPI specdocs.forager.ai/_bundle/openapi.json
llms.txtdocs.forager.ai/llms.txt
Base URLhttps://api-v2.forager.ai

Strengths and limits

Where it fits

  • Mobile phone lookup from a LinkedIn slug or Forager person id, as the first step of a phone waterfall (15 credits, charged only when a number is returned)
  • Counting people or companies for free before spending: the /totals/ variants of person, organization and job search
  • Finding a buying committee at a target account with person_role_search (51 filters: title, current role, dates, skills, location, organization ids/domains)
  • Teams that want the whole dataset as a table: annual Person (~800M), Organization (~61M) and Job Post feeds delivered to S3, GCS or Snowflake

Where it falls short

  • Agent-native use through an official MCP server: Forager publishes none (only a third-party wrapper exists)
  • Storing or reselling revealed contacts without the right license tier: the default Internal Use tier forbids giving data to third parties, and the terms set liquidated damages of $1.00 per API mobile number, $0.33 per email and $0.005 per Datafeed record for unauthorized retention, storage or resale, outside any liability cap
  • Hiring signals from job posts: in our client work the job API returned 2 of 100 and was replaced (see our_experience)
  • High-volume single work-email calls: the v2 single endpoint is rate limited for interactive use; Forager points enrichment runs to the bulk endpoint

Worth knowing

  • The v1 work-email endpoint (/api/{account_id}/datastorage/person_contacts_lookup/work_emails/) is gone from the current OpenAPI spec (it was in the June 2026 copy); the documented path is now the async v2 endpoint (submit, then poll or webhook). Docs vs live: our app still calls the v1 path and the account's balance log shows it billing 5 credits per successful lookup through 2026-10-24, so v1 still works today but is undocumented. Sources: docs.forager.ai/_bundle/openapi.json; live balance_change_logs read 2026-10-25
  • Source: docs.forager.ai/_bundle/openapi.json
  • Phone lookup now takes quality_tier: highest_quality (default, fewer numbers) or most_coverage (more numbers, separate unpublished price). Source: docs.forager.ai/_bundle/openapi.json
  • Default license tier is Internal Use: no reselling, sharing or giving data to clients. Cache-Only and Store-to-Resell tiers need an order form. Liquidated damages for unauthorized retention/storage/resale: $1.00 per API mobile number and $0.33 per email accessed during the term, and $0.005 per Datafeed record for unauthorized bulk resale; not subject to any liability cap. Agencies enriching for clients should check the tier first. Source: forager.ai/terms-conditions
  • Paid fees are non-refundable; credit-card payments can carry up to a 3% surcharge. Source: forager.ai/terms-conditions
7 moreShow fewer
  • Yearly billing grants all credits upfront at 10% off; monthly credits roll over. Source: forager.ai/pricing
  • No published rate limits, changelog or SDKs; the OpenAPI spec changed between June and October 2026 (new v2 work-email, quality_tier, account-scoped autocomplete) with no announcement page. Source: docs.forager.ai/llms.txt; docs.forager.ai/_bundle/openapi.json
  • The credit table lists 'Person role details lookup' (linked to the /totals/ endpoint) at 1 credit, but our live balance log (Oct 13-24 2026, ~6,000 entries) shows no such charge while the totals pre-check ran before every role_title search; earlier use also recorded 0. Live = free today; the docs could start billing it.
  • Cloudflare in front of api-v2.forager.ai blocks the default Python requests User-Agent with HTTP 403 (error code 1010); send a browser-like User-Agent. Source: our app
  • Search responses use search_results + total_search_results (not results); contact lookups return a bare JSON array.
  • role_title is a boolean text search: wrap multi-word titles in double quotes or /totals/ returns HTTP 400 ('unknown operation') and search acts as an AND. Abbreviations and spelled-out titles count differently (COO 27 vs Chief Operating Officer 0 at KPMG). person_role_search is windowed at ~500 results (10 per page).
  • A domain filter sweeps in every legal entity on that domain (kpmg.com = 92 orgs / 170,630 people); filter by the parent organization id to isolate one entity (main KPMG = 59,261).

Our take

We built and run an enrichment service on Forager's API for a client: HubSpot workflows call it, and it looks up the company by domain, searches people by buyer title, then fetches their emails and phone numbers. From the account's credit log, each role search costs 1 credit, email lookups 5 and phone lookups 15, contact lookups are charged only on success, and the role-search totals call is free, so we use it to skip titles with nobody before spending a credit. Two things to know: Forager's edge blocks the default Python user agent with a 403, and filtering people by domain pulls in every organization that shares that domain, so we filter by the parent organization id.

Who should use it

Use Forager for
Mobile phone lookup from a LinkedIn slug or Forager person id, as the first step of a phone waterfall (15 credits, charged only when a number is returned)
Look elsewhere for
Agent-native use through an official MCP server: Forager publishes none (only a third-party wrapper exists)

If Forager is not the answer

Other Enrichment tools in this directory, each with its own review.

Before you build

Four things to settle first, each read off Forager's own pages.

  • Confirm the API is on your planAPI access starts on the Starter plan. Free tier: 'Start Free' sign-up is offered on the homepage, but no free credit amount is published on the pricing page or in the docs.
  • Keep the key out of your codeAPI key. It is sent as: header X-API-KEY; the numeric account_id is part of every datastorage path.
  • Design around the rate limitNo numeric rate limits are published.
  • Know the catch before you scaleThe v1 work-email endpoint (/api/{account_id}/datastorage/person_contacts_lookup/work_emails/) is gone from the current OpenAPI spec (it was in the June 2026 copy); the documented path is now the async v2 endpoint (submit, then poll or webhook). Docs vs live: our app still calls the v1 path and the account's balance log shows it billing 5 credits per successful lookup through 2026-10-24, so v1 still works today but is undocumented. Sources: docs.forager.ai/_bundle/openapi.json; live balance_change_logs read 2026-10-25

Want us to build it for you?

Tell us what you want Forager to do in your stack. We will show you how we would wire it into your data, outbound or CRM, and what we would check first.

Read from forager.ai/pricing, docs.forager.ai/openapi and docs.forager.ai/_bundle/openapi.json. Verified 25 Oct 2026.

All 21 endpointsFor developers: method, path, what it does and what it costs.

Base URL: api-v2.forager.ai

Bulk and async: API: v2 bulk work-email lookup (async batch, poll or webhook; no max batch size published). Phone, personal-email and person lookups are single-record. Bulk datasets: annual Data License feeds (Person, Organization, Job Post) delivered to S3, GCS or Snowflake as NDJSON/CSV/Parquet. Sources: docs.forager.ai/_bundle/openapi.json; docs.forager.ai/data-license/v2/data-feed-overview

Webhooks: Per-request result webhooks on the v2 work-email endpoints only: pass webhook_url (https, up to 2,048 chars) on a single or bulk submit and Forager POSTs the results when the job/batch completes; put any auth secret in the query string. No event-subscription webhooks. Source: docs.forager.ai/_bundle/openapi.json

21 endpoints
MethodPathWhat it doesCost
POST/api/{account_id}/datastorage/person_role_search/Search people by role: title, description, current flag, start/end dates, years in role, name, headline, skills, locations, industries, organizations1 credit per call
POST/api/{account_id}/datastorage/person_role_search/totals/Count matching people/roles without returning recordsDocs credit table: 1 credit ('Person role details lookup'). Live: 0. Our app runs a /totals/ pre-check before every role_title search, and in the account's balance log (Oct 13-24 2026, ~6,000 entries) role_title searches are charged 1 credit each while no 'Person role details lookup' charge appears at all. The live app wins for what is charged.
POST/api/{account_id}/datastorage/person_detail_lookup/Full person profile1 credit
POST/api/{account_id}/datastorage/person_detail_reverse_lookup/by_email/Find the person behind an email5 credits
POST/api/{account_id}/datastorage/person_detail_reverse_lookup/by_phone_number/Find the person behind a phone number15 credits
POST/api/{account_id}/datastorage/person_contacts_lookup/phone_numbers/Phone (mobile) numbers for a person15 credits (highest_quality), charged only when a number is returned; most_coverage is 'charged at its own per-lookup rate', which is not published. Live log confirms: entries read 'Success person N phone number lookup, charged at highest_quality tier' at -15.00; no entries for misses
POST/api/{account_id}/datastorage/person_contacts_lookup/personal_emails/Personal email addresses for a person5 credits, charged only on success (live log entries read 'Success person N personal email lookup' at -5.00; pricing page: 'Successful email lookup: 5 credits')
POSTasync/api/v2/{account_id}/datastorage/person_contacts_lookup/work_emails/Start one work-email lookup (async job)Successful email lookup: 5 credits; charged once, only when an address is found; polling free
GETasync/api/v2/{account_id}/datastorage/person_contacts_lookup/work_emails/{job_id}/Poll one work-email jobfree
POSTasync/api/v2/{account_id}/datastorage/person_contacts_lookup/work_emails/bulk/Submit many work-email lookups in one batch5 credits per found address; balance must cover the whole batch or it is rejected with no charge; cache hits and in-batch duplicates collapse
GETasync/api/v2/{account_id}/datastorage/person_contacts_lookup/work_emails/bulk/{batch_id}/Poll a batch; results appear only when completed, in submitted orderfree
POST/api/{account_id}/datastorage/organization_search/Search companies1 credit per call
POST/api/{account_id}/datastorage/organization_search/totals/Count matching companiesNot stated
POST/api/{account_id}/datastorage/job_search/Search job post events2 credits per call
POST/api/{account_id}/datastorage/job_search/totals/Count matching job postsNot stated
POST/api/{account_id}/datastorage/website_detail_lookup/Website details: domain, web rank, traffic, web technologies1 credit (Organization technologies lookup)
GET/api/{account_id}/datastorage/autocomplete/{industries|organizations|organization_keywords|locations|person_skills|web_technologies}/Look up filter ids for searchNot stated
POST/api/{account_id}/datastorage/feedback/{work_emails|personal_emails|phone_numbers}/Report whether a returned email/phone is valid/connected and the right personNot stated
GET/api/{account_id}/subscriptions/balance_change_logs/Credit balance change log (and /totals/ for spend in a date range)Not stated
GET/api/users/current/Current user and accounts (account_id, subscription, credits balance)Not stated
GET/api/api_keys/List / create (POST) / view / delete API keysNot stated