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