API review

NeverBounce API review

Email verification API (single check + async bulk jobs) from ZoomInfo, with job callbacks, a point-of-entry JS widget and webhook-style single checks. Best for bulk list cleaning through async jobs with callbacks.

Verified 25 Oct 2026 · 11 endpoints listed

What a call costs

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

ActionCostPer
Verify one email (PAYG)$0.008 at the 1,000 pack to $0.002 at the 2,000,000 packper credit
List analysis / bounce-rate estimatefree (pricing page 'Free List Analysis'; API run_sample price not stated in docs)per list
Duplicates / bad syntax removalfreeper email

Pricing, plan by plan

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

Free tier 10 free credits on signup with a business email (live: they show as paid_credits_remaining, free_credits_remaining 0); free list analysis (bounce-rate estimate); no card needed

Pay as you go

One-off pack

One-off credit packs: 1,000 = $8; 5,000 = $40; 10,000 = $50; 25,000 = $125; 50,000 = $250; 100,000 = $400; 250,000 = $750; 500,000 = $1,500; 1,000,000 = $2,500; 2,000,000 = $4,000 ($0.008 down to $0.002/credit)

API included
Plan details

credits expire 12 months after purchase

Growth

$49/mo

billed monthly

$49/month for up to 10,000 emails/month on the public page; credit limits reset monthly; +200 AI-picked leads/month, AI scoring, CRM auto-sync; only new unique emails billed

API included

Enterprise

Custom quote

custom; typically 250,000+ emails/month

API included
Plan details

contact sales

Full PAYG ladder read from the page's embedded pricing data (the visible slider is behind a 'Press & Hold' bot challenge in headless). PAYG credits expire 12 months after purchase. First-time in-app banner offers 10% off with code VERIFY10 (24-hour countdown). Prices shown in USD from both the public page and the in-app page.

Rate limits

Bulk: 10 concurrent jobs and max 50 runs per day per account; do not create more than 10 jobs per 100k items per hour; submit lists under 1M as one job, split larger ones into 1M chunks; 25 MB request cap.

More on limitsLess

Single check: only for point-of-entry use. No numeric req/sec limit published. The error table includes throttle_triggered ('rejected due to rate limiting; try again shortly'), so a request-rate limit exists but its number is not published; no rate-limit headers were returned on our live calls (2026-10-25).

How to get an API key

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

  1. Create a NeverBounce account. API access starts on the Growth plan.
  2. Dashboard -> API (/apps) -> Custom Integration -> Create New; the app overview shows the key. The docs' direct link app.neverbounce.com/apps/custom-integration/new returned 404 live on 2026-10-25. V3 username/secret do not work on V4.
  3. Send it with every request: query string or POST body parameter 'key'.
  4. Make a first call: Create a bulk verification job from supplied data or a remote URL. Keep the key in an environment variable, never in the command.
    curl -X POST "https://api.neverbounce.com/v4.2/jobs/create?key=$NEVERBOUNCE_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{}'

Where the docs live

WhatWhere
Documentationdevelopers.neverbounce.com
API referencedevelopers.neverbounce.com/reference/getting-started
llms.txtdevelopers.neverbounce.com/llms.txt
Changelogdevelopers.neverbounce.com/changelog/version-42
Base URLhttps://api.neverbounce.com/v4.2
SDKsNode.js (v5, TypeScript, Node 18+), Python, PHP, Java, .NET, Ruby, Go

Strengths and limits

Where it fits

  • Bulk list cleaning through async jobs with callbacks (no polling)
  • Free pre-check of a list: run_sample estimates the bounce rate before credits are spent
  • Form/point-of-entry verification via the JavaScript widget

Where it falls short

  • Looping single/check over an existing database (forbidden; account may be locked)
  • Many small jobs: >10 jobs per 100k items per hour can lock the account
  • AI-agent/MCP workflows (no MCP server found in the docs)

Worth knowing

  • Using single/check to clean an existing list one-by-one can get the account locked and API access disabled; use jobs.
  • Max 10 concurrent jobs and 50 job runs per day; more than 10 jobs per 100k items per hour risks a lock.
  • jobs/create defaults auto_parse=0 and auto_start=0: a job does nothing until you call parse/start (credits are deducted at start).
  • Pay-as-you-go credits expire 12 months after purchase (unlike ZeroBounce ONE, Bouncer and MillionVerifier where credits do not expire).
  • v4.2 breaking change: flag acedemic_host renamed academic_host; API jobs are no longer eligible for manual review unless allow_manual_review is set.
5 moreShow fewer
  • The current ReadMe llms.txt only lists /check; the other reference pages exist but are unlisted (fetched by slug).
  • Credit balance in /account/info and in single/check credits_info lags the charge (live 2026-10-25: still 10 right after a check, 9 about 20 minutes later); do not meter calls from it in real time.
  • Signup credits (10) appear as paid_credits_remaining, not free_credits_remaining (live 2026-10-25).
  • Live keys start private_, not the secret_ shown throughout the docs; the docs' direct link to create a Custom Integration app is a 404 (create it from /apps).
  • API keys go in the query string by default; prefer the POST body so keys do not land in logs.

Who should use it

Use NeverBounce for
Bulk list cleaning through async jobs with callbacks (no polling)
Look elsewhere for
Looping single/check over an existing database (forbidden; account may be locked)

If NeverBounce is not the answer

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

Before you build

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

  • Confirm the API is on your planAPI access starts on the Growth plan. Free tier: 10 free credits on signup with a business email (live: they show as paid_credits_remaining, free_credits_remaining 0).
  • Keep the key out of your codeAPI key. It is sent as: query string or POST body parameter 'key'.
  • Design around the rate limitBulk: 10 concurrent jobs and max 50 runs per day per account; do not create more than 10 jobs per 100k items per hour; submit lists under 1M as one job, split larger ones into 1M chunks; 25 MB request cap.
  • Know the catch before you scaleUsing single/check to clean an existing list one-by-one can get the account locked and API access disabled; use jobs.

Want us to build it for you?

Tell us what you want NeverBounce 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 neverbounce.com/pricing, developers.neverbounce.com/reference/getting-started and developers.neverbounce.com/reference/usage-guidelines. Verified 25 Oct 2026.

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

Base URL: api.neverbounce.com/v4.2 (v4 and v4.1 still documented)

Bulk and async: Yes: async jobs API (create -> parse -> start -> status -> results/download), remote_url or supplied JSON input, up to 1M emails per job recommended

Webhooks: Job callbacks: pass callback_url (+ callback_headers) on jobs/create; NeverBounce POSTs {job_id, event} on status changes (v4.2). single/check can also be used as an inbound webhook URL for CRMs.

11 endpoints
MethodPathWhat it doesCost
GET|POST/account/infoCredit balance and job countsfree
GET|POST/single/checkVerify one email in real time1 credit per verification (measured live 2026-10-25: 1 credit, but the deduction appeared in /account/info ~20 minutes later)
POSTasync/jobs/createCreate a bulk verification job from supplied data or a remote URLnone at create; credits deducted when the job starts. run_sample: the API docs do not state a price; the pricing page advertises 'Free List Analysis' (bounce-rate estimate before purchase)
POSTasync/jobs/parseStart indexing a job created with auto_parse=0free
POSTasync/jobs/startStart verification (deducts credits)1 credit per billable row (rows with syntactically valid emails; duplicates and bad syntax are not charged); deducted when the job starts and cannot be stopped
GETasync/jobs/statusJob progress and statsfree
GETasync/jobs/resultsPaginated JSON resultsfree
GET|POSTasync/jobs/downloadDownload results as CSV with filtersfree
GET/jobs/searchList/search jobsfree
POST/jobs/deleteDelete a jobfree
POST/poe/confirmConfirm a point-of-entry (widget) verification server-sideNot stated