Private Beta

Call one API.
Cover all of your TAM.

From your terminal, your agent, Clay, or any tool that speaks HTTP. Describe your ICP. Send target companies. Get back prioritized decision-makers with verified contact data.

5 min
to first enrichment
50 RPS
provider orchestration handled
set & forget
results delivered to your webhook
Request
POST /api/v1/batches

{
  "companies": [
    {
      "domain": "figma.com"
    },
    {
      "domain": "stripe.com"
    },
    {
      "domain": "notion.so"
    },
    {
      "domain": "slack.com"
    },
    {
      "domain": "atlassian.com"
    }
  ],
  "icp": {
    "description": "B2B sales leaders who can authorize GTM automation tools",
    "mode": "precise"
  },
  "enrich": {
    "mode": "email"
  },
  "webhook": {
    "url": "https://your-app.com/webhooks/tam-supply",
    "batchSize": 25
  }
}
Response
POST https://your-app.com/webhooks/tam-supply (final)

{
  "job": {
    "id": "e3a0ee69-6cd8-4b5e-8fbe-be4694dbcb15",
    "status": "completed",
    "totalCompanies": 1,
    "processedCompanies": 1,
    "successCount": 1,
    "failedCount": 0,
    "createdAt": "2026-03-22T17:04:32Z",
    "completedAt": "2026-03-22T17:05:44Z"
  },
  "meta": {
    "totalContactsFound": 2,
    "totalContactsEnriched": 2,
    "totalStaleContacts": 0,
    "customData": null,
    "creditsUsed": "2.00",
    "costBreakdown": {
      "byProvider": {
        "TAM.supply": "1.00",
        "prospeo": "1.00"
      }
    }
  },
  "message": "Found 2 contacts (TAM.supply: 1, Prospeo: 1). Enriched 2 contacts.",
  "final": true,
  "withEnrichment": [
    {
      "firstName": "Dylan",
      "lastName": "Field",
      "fullName": "Dylan Field",
      "title": "CEO",
      "targetCompanyName": "Figma",
      "personLinkedInUrl": "https://www.linkedin.com/in/dylanfield",
      "email": "dfield@figma.com",
      "emailVerified": true,
      "sourceProvider": "TAM.supply",
      "enrichmentProvider": "Prospeo",
      "priorityGroup": 1
    }
  ],
  "withoutEnrichment": [],
  "stale": []
}
limited coverage

Most GTM teams' TAM ends at their data provider's coverage. One provider gives 50-60%. The rest sits in databases they never query.

compounding overhead

Why? Because closing that gap means multiple providers, multiple subscriptions. Different data formats. Dedup logic. Credit spend management. Sync and async in the same pipeline.

wrong job

Even with Claude Code, teams end up debugging and duct-taping everything together more than executing actual GTM strategies.

Debugging doesn't have to become your job.

One API call, one subscription, speak to 80-85% of your TAM.

Without TAM.supply
Your AppProspeoTAM.supplyFullEnrichBetterContactYour DB+ more?rate limitsretry logicauth mgmtnormalize datadedup logicstale detectionwaterfall logic · failover · monitoring~ 4-6 weeks to buildongoing maintenance forever⚠ silent coverage gaps
→
With TAM.supply
Your App1 API callTAM.supplyICP match · waterfall · verify · deliverProspeoFullEnrichBetterContactTAM.supply+ more{"coverage":"84.6%""paidCalls":12// of 142}5 minutes to integrate
// cost-optimized waterfall
80-85% coverage. Paid calls reduced up to 90%.
// ICP-driven discovery
Decision-makers first. Time-wasters never reach you.
// stale detection
Avoid stale contacts that don't work at your target companies anymore.
// BYOK
Your keys. Your rates. No markup.
Enrichments (30d)
16
Avg Found Rate
94.9%
Avg Enrichment Rate
100.0%
Found Contacts / Company
9.25
StatusTypeJob IDFoundEnrichedFailed
cancelledCollectionb861d577...000›
completedCollection66bb46b9...110›
failedCollection8dc21c6e...000›
completedBulk6f5f57bc...220›
Cover your TAM in 5 minutes.
Get API Access