---
title: "BetterContact API: pricing, rate limits & MCP | ONEGTMLAB"
description: "BetterContact API: Waterfall aggregator that cascades 20+ data providers (RocketReach, Apollo, ContactOut, Datagma, PDL, Enrich.so, Prospeo, Hunter and…"
canonical: https://www.onegtmlab.dev/tool-directory/enrichment/bettercontact
---

# BetterContact API: pricing, rate limits & MCP | ONEGTMLAB

[](/)

[

Book a call

](/book)

![](/_astro/bettercontact.DR_th9s7_ZfMiKE.webp)

API review

# BetterContact API review

Waterfall aggregator that cascades 20+ data providers (RocketReach, Apollo, ContactOut, Datagma, PDL, Enrich.so, Prospeo, Hunter and more) to find verified work emails and mobiles, charging only for valid results; async API with webhooks plus Lead Finder and Company Finder search. Best for one-bill access to 20+ email/phone providers without holding their keys.

Verified 25 Oct 2026 · 9 endpoints listed

[

See pricing

](#pricing)[

BetterContact API docs

](https://doc.bettercontact.rocks/llms.txt)

At a glance

Category

Enrichment, Sourcing, Verification

Pricing model

Credits

Free tier

50 free credits on signup, no credit card (pricing page and app login page)

Entry price

$15/mo, billed monthly Starter

Auth

API key

Official MCP

No official server

Best for

One-bill access to 20+ email/phone providers without holding their keys

[bettercontact.rocks ↗](https://bettercontact.rocks)[Pricing page ↗](https://bettercontact.rocks/pricing)

## What a call costs

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

Action

Cost

Per

Valid work email (incl. Bouncer verification)

1 credit

per email found

Verified mobile phone

10 credits

per mobile (Pro: only P1 'high propensity' numbers charged per Connect Intelligence)

Company Finder

0.1 credit

per company returned

Enrich lead profile

0.1 credit

per profile found

Enrich company profile

0 credits

per call

Not found / undeliverable

0 credits

per lead

Annual billing

2 months free (pay 10, get 12)

per year

## Pricing, plan by plan

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

Free tier 50 free credits on signup, no credit card (pricing page and app login page). The app signup page says 'Start free - 100 credits included'; unconfirmed which amount is granted because our signup was blocked.

### Starter

$15/mo

billed monthly

200 credits/month

API includedPlan details

No phone verification, catch-all verification or Connect Intelligence on Starter

### Pro 1,000

$49/mo

billed monthly

1,000 credits/month

API included

### Pro 3,000

$149/mo

billed monthly

3,000 credits/month

API included

### Pro 5,000

$199/mo

billed monthly

5,000 credits/month

API included

### Pro 10,000

$399/mo

billed monthly

10,000 credits/month

API included

### Pro 20,000

$799/mo

billed monthly

20,000 credits/month

API included

Show all 9 plansShow fewer plans

### Pro 30,000

$1,199/mo

billed monthly

30,000 credits/month

API included

### Pro 50,000

$1,999/mo

billed monthly

50,000 credits/month

API included

### Enterprise

$799/mo

billed monthly

from $799/mo, above 20,000 credits, custom volume; BYOK supported

API includedPlan details

Custom bulk discounts

## Rate limits

Per API key, across all endpoints together.

Limit

Starter, free and legacy accounts under 1,000 monthly credits

Pro and accounts from 1,000 monthly credits

Higher volumes

Limit

100 requests/min

200 requests/min

On request

More on limitsLess

429 with body 'Retry later'; back off exponentially (a client retrying at full speed can get the account blocked). Unknown/deactivated keys throttled to 5 requests per 5 minutes per IP. GET /account is exempt.

## How to get an API key

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

1.  Create a BetterContact account. API access starts on the Starter plan.
2.  app.bettercontact.rocks/api\_requests; regenerate or deactivate there; keys are per user, credits pooled per organisation
3.  Send it with every request: header X-API-Key (NOT Authorization: Bearer, which returns 401); enrich\_profile endpoints also accept api\_key in the body.
4.  Make a first call: Submit up to 100 leads for waterfall email and/or mobile enrichment. Keep the key in an environment variable, never in the command.
    
    ```
    curl -X POST "https://app.bettercontact.rocks/api/v2/async" \
      -H "Authorization: Bearer $BETTERCONTACT_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{}'
    ```
    

## Where the docs live

What

Where

Documentation

[doc.bettercontact.rocks/quickstart](https://doc.bettercontact.rocks/quickstart)

API reference

[doc.bettercontact.rocks/llms.txt](https://doc.bettercontact.rocks/llms.txt)

OpenAPI spec

[doc.bettercontact.rocks/api-reference/openapi.json](https://doc.bettercontact.rocks/api-reference/openapi.json)

llms.txt

[doc.bettercontact.rocks/llms.txt](https://doc.bettercontact.rocks/llms.txt)

Base URL

`https://app.bettercontact.rocks/api/v2`

## Strengths and limits

### Where it fits

-   One-bill access to 20+ email/phone providers without holding their keys
-   Mobile numbers with phone verification (Trestle, IPQS, internal) and Connect Intelligence scoring on Pro
-   Catch-all email verification (catch\_all\_safe / catch\_all\_not\_safe) on Pro
-   Batch enrichment of up to 100 leads per call with webhook delivery
-   Search-and-enrich in one call: Lead Finder with enrich\_email\_address / enrich\_phone\_number

### Where it falls short

-   Stacking inside another waterfall (it already calls Prospeo, Hunter, Apollo, PDL and others)
-   Phone enrichment on Starter without the phone add-on (402 rejected)
-   Verifying webhook origin cryptographically: webhooks carry no signature
-   Company Finder pipelines that need push delivery: Company Finder has no webhook

### Worth knowing

-   Branch on body.status, never on HTTP code: GET endpoints answer 202 with an empty body while running; only status 'terminated' guarantees results
-   Submissions are not idempotent: retrying a POST that actually succeeded enriches and charges twice; check GET /account before resubmitting after a timeout
-   on\_hold (balance hit zero mid-flight) resumes by itself after a top-up, so do not resubmit; but a Company Finder on\_hold never resumes and must be resubmitted
-   402 means either out of credits or feature not on plan (phone add-on, catch-all add-on); read message to tell them apart
-   Unknown request id: 406 on enrichment, 404 on Lead/Company Finder

8 moreShow fewer

-   Filter values not in the Taxonomies list (industries, technologies, seniority, departments, functions, revenue, funding rounds, countries) silently match nothing; Company Finder silently ignores exclude and unknown keys; company domain is case-sensitive
-   A Lead Finder search for one domain with limit 1 is rejected with 422; use /enrich\_profile/company
-   credits\_left / credits\_consumed on Company Finder are decimal strings ('998.5')
-   Per-lead webhook custom\_fields come back as an array of {name, value, position}, not the object you sent
-   Pricing page says 'No charge for catch-alls whatsoever', but the credits doc says catch-alls ARE charged when verify\_catch\_all is off, and catch-all verification is not on Starter
-   Rate limits rose from 60/min (our April 2026 copy) to 100 or 200/min by plan
-   Credit roll-over: the pricing page plan cards say 'capped at your subscribed credit amount' but the same page's example and FAQ say capped at 2x (5,000-credit plan holds max 10,000). Annual plans extend roll-over to 12 months. Source: [bettercontact.rocks/pricing](https://bettercontact.rocks/pricing) (verified 2026-10-25)
-   Free signup credits disagree in the vendor's own copy: 50 (pricing page, app login page) vs 100 (app signup page). Source: [bettercontact.rocks/pricing](https://bettercontact.rocks/pricing); [app.bettercontact.rocks/users/sign\_up](https://app.bettercontact.rocks/users/sign_up) (verified 2026-10-25)

### Our take

We left BetterContact out of an enrichment waterfall we built for a B2B data company: it is itself a multi-provider waterfall, so it overlapped the providers we already called, and the orchestration platform we used could run it only on the platform's own credits.

## Who should use it

Use BetterContact for

One-bill access to 20+ email/phone providers without holding their keys

Look elsewhere for

Stacking inside another waterfall (it already calls Prospeo, Hunter, Apollo, PDL and others)

## If BetterContact is not the answer

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

[

![](/_astro/hunter.C-TuEfmZ_ZqQMvN.webp)

Hunter

Enrichment

Free planOfficial MCP

Best for domain search: every published email at a company with sources and confidence.

Hunter API review →](/tool-directory/enrichment/hunter)[

![](/_astro/builtwith.BMJrfeKy_TBkkh.webp)

BuiltWith

Enrichment

From $245.83/moOfficial MCP

Best for front-end / web technographics per domain with first/last detected dates.

BuiltWith API review →](/tool-directory/enrichment/builtwith)[

![](/_astro/clearbit.7WpkIFNS.svg)

Clearbit

Enrichment

Best for existing Clearbit API customers maintaining legacy integrations.

Clearbit API review →](/tool-directory/enrichment/clearbit-hubspot)

## Before you build

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

-   **Confirm the API is on your plan**API access starts on the Starter plan. Free tier: 50 free credits on signup, no credit card (pricing page and app login page).
    
-   **Keep the key out of your code**API key. It is sent as: header X-API-Key (NOT Authorization: Bearer, which returns 401); enrich\_profile endpoints also accept api\_key in the body.
    
-   **Design around the rate limit**Per API key, across all endpoints together.
    
-   **Know the catch before you scale**Branch on body.status, never on HTTP code: GET endpoints answer 202 with an empty body while running; only status 'terminated' guarantees results
    

## Want us to build it for you?

Tell us what you want BetterContact 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.

[

Book a call

](/book)[

See case studies

](/case-studies)

Read from [bettercontact.rocks/pricing](https://bettercontact.rocks/pricing), [doc.bettercontact.rocks/llms.txt](https://doc.bettercontact.rocks/llms.txt) and [doc.bettercontact.rocks/api-reference/api\_rate\_limits](https://doc.bettercontact.rocks/api-reference/api_rate_limits). Verified 25 Oct 2026.

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

**Base URL:** `https://app.bettercontact.rocks/api/v2`

**Bulk and async:** Up to 100 leads per POST /async; Lead Finder and Company Finder up to 200 results per page

**Webhooks:** Yes for /async and Lead Finder (not Company Finder). Sent once when the request reaches terminated; body identical to the GET payload; retried up to 5 attempts (10s, 2min, 3min, 4min). No signature or auth header: treat URL as secret and confirm via GET /async/{id}. Per-lead contact\_webhook (push\_contact\_individually) is never retried.

Filter endpoints

9 endpoints

Method

Path

What it does

Cost

POSTasync

`/async`

Submit up to 100 leads for waterfall email and/or mobile enrichment

1 credit per deliverable email, 10 per verified mobile; 0 for undeliverable/not found; catch-alls charged unless verify\_catch\_all is on (then only catch\_all\_safe charged)

GETasync

`/async/{request_id}`

Fetch enrichment results

free

POSTasync

`/lead_finder/async`

Search new leads by company + people criteria (include/exclude on every list filter)

Search itself consumes no enrichment credits (free-request quota on lower plans); enrichment flags charge normal enrichment credits

GETasync

`/lead_finder/async/{request_id}`

Fetch Lead Finder results

free

POSTasync

`/company_finder/async`

Search companies by firmographic, funding and hiring criteria (include only)

0.1 credit per company returned, each page charged separately; no match free

GETasync

`/company_finder/async/{request_id}`

Poll Company Finder results (no webhook available)

free

POST

`/enrich_profile/lead`

Synchronous single-person profile (title, seniority, location, LinkedIn, current company); no email or phone

0.1 credit per profile found; 0 on 404

POST

`/enrich_profile/company`

Synchronous single-company profile (industry, headcount, HQ, description, keywords, LinkedIn)

free

GET

`/account`

Organisation credit balance

free

[](/)

© 2026 ONEGTMLAB Private Limited. All rights reserved.

COMPANY

[

Why Us

](/#why-us)[

Process

](/#timeline)[

Blogs

](/blogs)[

About

](/about)[

Clients

](/clients)[

Free resources

](/free-resources)[

Newsletter

](/newsletter)

Services

[

GTM Engineering

](/ai-gtm-engineering)[

Account-Based Marketing

](/services/account-based-marketing)[

Paid Media

](/services/paid-media)[

Content Engineering

](/linkedin-personal-branding)[

RevOps

](/services/revops)[

SEO, AEO & GEO

](/services/seo-aeo-geo)[

All services

](/services)

![](/_astro/wordmark-3d.CMEfGdYr.svg)
