Enrich mobiles just in time at dial time instead of bulk refreshes
Look up a mobile only when a contact is about to be dialed so numbers are fresh and credits are spent on contacts that are actually called.
- Free API key
- No credit card
- Run your sample
A selection of teams that run this job on Forager · plus other sales-tech platforms
Uses POST /person_detail_lookup/, POST /person_contacts_lookup/phone_numbers/ · Person enrichment API reference
What it costs: 15 credits per mobile found. A mobile or email lookup that returns nothing costs 0 credits. Enrichment and search are charged per request: credit pricing.
- Mobile numbers
- Person enrichment
- API
- Waterfall slot
- Sales tech
How the data flows
POST /person_detail_lookup/ - phone number
- +1 (212) 555-0199
- current role title
- VP Revenue Operations
- organization
- Example Inc.
- looked up at
- 2026-10-01
- name
- Alex Sample
- work email
- alex@example.com
Steps
- Dialer flags queued contacts with missing or stale phone fields
- Resolve identity with
POST /person_detail_lookup/(linkedin_public_identifier) to confirm current role - Call
POST /person_contacts_lookup/phone_numbers/only for contacts confirmed in role; storephone_numberwith lookup timestamp - Skip lookups for contacts not dialed in the session, avoiding bulk list spend
- Expire cached numbers on the platform's freshness rule and re-query on next dial
import json, os, requests BASE = "https://api-v2.forager.ai/api/{account_id}/datastorage" HEADERS = {"X-API-KEY": os.environ["FORAGER_KEY"]} body = json.load(open("request.json")) # request fields: see the API reference # 1. Dialer flags queued contacts with missing or stale phone fields # 2. Resolve identity with POST /person_detail_lookup/ # (linkedin_public_identifier) to confirm current role r1 = requests.post(f"{BASE}/person_detail_lookup/", headers=HEADERS, json=body) # 3. Call POST /person_contacts_lookup/phone_numbers/ only for contacts # confirmed in role; store phone_number with lookup timestamp r2 = requests.post(f"{BASE}/person_contacts_lookup/phone_numbers/", headers=HEADERS, json=body) # 4. Skip lookups for contacts not dialed in the session, avoiding bulk list # spend # 5. Expire cached numbers on the platform's freshness rule and re-query on # next dial
# 1. POST /person_detail_lookup/ curl -X POST \ https://api-v2.forager.ai/api/{account_id}/datastorage/person_detail_lookup/ \ -H "X-API-KEY: $FORAGER_KEY" \ -H "Content-Type: application/json" \ -d @request.json # 2. POST /person_contacts_lookup/phone_numbers/ curl -X POST \ https://api-v2.forager.ai/api/{account_id}/datastorage/person_contacts_lookup/phone_numbers/ \ -H "X-API-KEY: $FORAGER_KEY" \ -H "Content-Type: application/json" \ -d @request.json
Run it yourself: Person enrichment API reference
- Free API key
- No credit card
- Run your sample
Inputs and outputs
| Inputs | Outputs |
|---|---|
| queued contact | phone_number |
| LinkedIn identifier | current role_title |
| last-enriched timestamp | organization |
looked_up_at |
Questions about this recipe
Is it better to bulk-enrich call lists or look up phone numbers at dial time?
Look up a mobile only when a contact is about to be dialed so numbers are fresh and credits are spent on contacts that are actually called. Reps dial fresher numbers while the platform lowers data spend per connected conversation.
What does it cost to enrich mobiles just in time at dial time instead of bulk refreshes?
Mobile numbers: 15 credits per mobile number found, and a mobile number lookup that finds nothing costs 0 credits. Person enrichment: 1 credit per request, charged whether or not data comes back. Growth's 8,250 monthly credits cover 550 mobiles or 8,250 person enrichments, or a mix. Self-serve plans are Starter, Growth, Pro and Scale. See plans and prices
What do I need to run this recipe, and what comes back?
You send last-enriched timestamp, LinkedIn identifier and queued contact. You get back current role_title, looked_up_at, organization and phone_number, as JSON. You also need a Forager API key, which comes with a free account.
How do dialers keep phone numbers fresh without re-buying whole lists?
Dialer flags queued contacts with missing or stale phone fields. Call POST /person_contacts_lookup/phone_numbers/ only for contacts confirmed in role; store phone_number with lookup timestamp.
Can I test mobile numbers for free?
Yes. Create a free account at app.forager.ai: it comes with $5 in free credits and an API key, and there is no credit card to sign up. Run it on records you already know, or book a demo and send us a list: we run it and show you what we find.
When should I run this workflow?
When a contact enters today's dial queue without a verified mobile, or its stored number is older than the platform's freshness window. Reps dial fresher numbers while the platform lowers data spend per connected conversation.
Which Forager products does this recipe use?
Mobile numbers and person enrichment. Mobile numbers: direct mobile numbers for a person, from a LinkedIn URL or a Forager person ID, validated before they reach you. Person enrichment: a full professional profile for a person from a LinkedIn URL, email or phone: experience, education, skills and contact channels.
How do I know the data is right?
Forager ranked #1 of 10 in Clay's 2026 test of mobile data providers, by quality score: Clay's measure of how likely a dialled number reaches the right person. The test that counts is your own: send a list of profiles you care about. We run it and show you what we find, number by number, so you can measure hit rate and connect rate yourself.
Which tools can run this workflow?
Native in Clay and Zapier, partner-built in Deepline and Cargo and called through the API from Make, n8n and your own code. Or call the endpoints in the steps above from your own code with one API key.
How many steps is this workflow?
5 steps: dialer flags queued contacts with missing or stale phone fields, resolve identity with POST /person_detail_lookup/ (linkedin_public_identifier) to confirm current role, call POST /person_contacts_lookup/phone_numbers/ only for contacts confirmed in role; store phone_number with lookup timestamp, skip lookups for contacts not dialed in the session, avoiding bulk list spend and expire cached numbers on the platform's freshness rule and re-query on next dial.
Do I need a subscription?
Not to test: a free account comes with $5 in credits. To keep using Forager, choose a monthly or yearly plan. Monthly plans cancel anytime and unused credits roll over; yearly plans grant all credits upfront and cost 10% less. Larger volumes are agreed with our team.
Can our users see Forager data in our product?
Yes, under platform terms. Self-serve plans cover internal use by your own team. Showing Forager contacts to your users, or passing records on, is licensed separately: talk to sales about volume and which fields your users need to see.
Written answers are not available right now. The matching pages above still help, or book a demo and ask the team.
- $5 free credits
- No credit card
- Run your sample
A selection of teams that run this job on Forager · plus other sales-tech platformsA selection of teams using Forager
-
Clay - GTM workflow builders
Selected use case: Forager mobile numbers, emails and people data inside Clay tables.
-
Juicebox
- AI candidate sourcing
Selected use case: Forager data behind its PeopleGPT search and sourcing agents.
-
Nooks - Power & parallel dialers
Selected use case: mobile numbers inside their dialer.
-
Amplemarket
- AI SDRs
Selected use case: mobile numbers inside its contact waterfall.
-
Airscale
- Waterfall enrichment
Selected use case: a Forager step in its mobile number waterfall.
-
HubSpot
- CRM add-ons
Selected use case: enriching contact and company records with people, company and job-posting data.
-
Klenty
- Power & parallel dialers
Sales engagement and AI dialer platform.
-
Orbital - Lead databases
Selected use case: contact lookups in its enrichment waterfall, for teams selling to local businesses.
More recipes for power & parallel dialers
-
Feed a parallel dialer with direct mobile numbers
-
Score mobile numbers by connect likelihood before dialing
-
Pair mobile numbers with best-time-to-call scheduling
-
Add a mobile-number slot to a multi-provider enrichment waterfall
-
Detect CRM contacts who changed jobs and alert on moved champions
-
Back a sales-intelligence database with an additional mobile source