smarter/data

B2B local data · API + hosted MCP · 100 free credits on sign-up

Nearly every U.S. local business. Query it like a database.

20.8 million U.S. local businesses — deduplicated into one clean row each, with decision-maker contacts, mobile numbers and personal-pattern emails where we hold them — filterable by state, city, ZIP, industry, service line and size, plus email verification, fresh crawling and live local search (bring-your-own-list enrichment is coming soon), in one credit-metered API and hosted MCP server your agents can call mid-conversation. Counting is free. Estimates are free. No match, no charge.

Start free See what it does 100 free credits on sign-up · no card · no subscription
mcp://smarterdata.ai · sessionlive
// your agent, mid-task — sizing is always free → count_businesses { "niche": "general_contractor", "state": "TX" } ← { "count": 47155, "credits_used": 0 } → count_contacts { "niche": "general_contractor", "state": "TX" } // decision-maker contacts, still free ← { "count": 10448, "credits_used": 0 } → find_contacts { "business_id": "co:d:examplepaving.com", "channels": "email,cell" } ← { "step": "estimate", "count": 2, "credit_cost": 6, // nothing charged yet "note": "call again with confirm=true (and max_credits) to reveal" } → find_contacts { "business_id": "co:d:examplepaving.com", "confirm": true, "max_credits": 10 } ← { "records": [ { "name": "J. Doe", "title": "Owner", "channels": { "email": { "value": "j***@examplepaving.com", "status": "unverified" }, "cell": { "value": "(•••) •••-••••" } } }, … ], "credits_used": 6 }
20.8MU.S. local businesses
2.6MMobile numbers on file
2.0MNamed-person emails
47,134ZIP codes covered
43Industry verticals

01 · The store

What's actually in it — measured, not marketed

Every headline figure on this page was measured on the serving database on 2026-10-25 (current build: 2026-09-02) — not a rounded-up brochure figure; code samples are illustrative. The store covers every U.S. state, assembled from business directories, map listings, public records and each company's own web presence — deduplicated into one row per business with a fixed, CSV-ready schema.

Field coverage · 20.8M companies

Company phone87%
Website / domain66%
Email on file33%
Named decision-maker5%
Multi-service detected27%

every company row: 24 fixed fields · unknown = explicit null · decision-maker = the strict definition below

Largest verticals · companies on file

Medical2.60M
Restaurants & food2.43M
Retail1.35M
Education1.24M
Personal care1.08M
Manufacturing1.03M
Automotive969K
Financial services967K
Religious929K
Real estate695K

+ 33 more verticals: general contractors, hospitality, apartments, grocery, security, fitness, moving… · 19% of companies carry no vertical yet; sector, service line, NAICS and geography still apply to them

company record1 credit
{ "business_id": "co:d:examplepaving.com", "name": "Example Paving Co.", "niche": "concrete_paving", "niche_refined": "concrete_paving", "sector": "Construction", "naics": "238110", "street": "1402 Oak St", "city": "Dallas", "state": "TX", "zip": "75204", "lat": 32.8007, "lon": -96.7899, "phone": "2145550142", // 10-digit, normalized "domain": "examplepaving.com", "domain_status": null, "employees": 12, "employees_band": "10-49", "revenue_est": 3200000, "revenue_band": "1-10M", // modeled estimate, labeled "service_lines": ["concrete_paving", "general_contractor"], "is_multi_location": false, "is_public": null, "quality_score": 85, // 0–100 public completeness "origins": ["map_listing", "web_presence"] }
contact record3 credits
{ "name": "Jordan Doe", "title": "Owner", "seniority": "owner_operator", "is_decision_maker": true, "contact_class": "person", // what this record IS — see below "channels": { "email": { "value": "jordan@examplepaving.com", "type": "personal", // never info@ sold as a person "status": "unverified" }, // honest until YOU verify "cell": { "value": "2145550177", "type": "personal", "line_type": "unknown" } // line type not checked (coming with skip-trace) }, "email_capable": true, "sms_capable": true, "call_capable": true, "is_chain_contact": false // franchise HQ noise withheld by default }

Labeled for what it is, not what sells

Most data vendors flatten everything into "a contact." We classify every record so you know exactly what you're buying before you spend a credit:

person

2.78M decision-maker contacts. A named decision-maker with an email or mobile, counted per company — a person listed at two companies is two contacts — the strict definition the API counts (/v1/count?entity=contacts) and delivers. The sellable core.

person_business_inbox

A named individual whose only email is a shared inbox. The email is labeled type: business — never passed off as personal.

business_inbox

5.2M mailboxes. A reachable company mailbox with no named person. Honest reach when no human is published.

owner_name_only

220K names. An owner/officer name with no direct channel yet, screened against a 29,000-name dictionary — built to pair with skip-trace.

Slice the store on any combination of:

state · multicityzipniche · 43 verticalsservice_line · multi-service awaresectornaics · prefix matchemployees_band · known for ~8%revenue_band · modeledname · containshas_websiteis_publicquality_min

Decision-maker coverage is a free aggregate count — count_contacts tells you how many decision-maker contacts sit behind any filter before you pull a single row. Reveal one company's contacts once that company is yours, or search contacts across a whole segment of 25+ companies with GET /v1/contacts.

Service-line filtering means a general contractor that also roofs matches "roofing" — 5.5M companies carry more than one detected service line, and single-category databases miss them.

02 · The products

Seven capabilities — five live today, two on the way.

Warehouse search, people, verification, fresh crawling and live local results are live; skip-trace is activating and bring-your-own-list enrichment is coming soon — every one behind the same key, the same envelope, the same billing rules. Nothing is a separate subscription.

company searchGET /v1/companies
→ ?niche=hvac&state=FL&service_line=hvac&limit=500 ← { "count": 500, "total_matching": 2449, "has_more": true, "credits_used": 500, "records": [ full 24-field rows… ] }
1 credit / recordcounts & estimates free

Search & count. Size any market for free, then pull it. Ordered by data quality, so your first records are your best records.

contact revealGET /v1/companies/:id/contacts
→ /v1/companies/co%3Ad%3Aexamplepaving.com/contacts ?channels=email,cell&dm_only=true ← { "records": [ { "name": "Jordan Doe", "title": "Owner", "channels": { "email": {…}, "cell": {…} } } ], "credits_used": 3 } // billed per contact, deduped
3 credits / contactchain contacts withheld by default

Named decision-makers. Strict by default: a real person's name in an owner, executive, operational or financial role, with an email or a mobile number. You're only billed for contacts carrying a channel you asked for — size them free with count_contacts and price a reveal with estimate=true before you spend.

email verificationPOST /v1/verify
→ /v1/verify/email { "email": "jordan@examplepaving.com", "smtp": true } ← { "job_id": "3f0e9c2a-…", "credits_held": 3 } // held, settled on completion → GET /v1/jobs/3f0e9c2a-… ← { "status": "complete", "credits_used": 3, "records": [ { "status": "valid", "verified_at": "…T09:14:02Z" } ] } → /v1/verify/bulk { "emails": [ …up to 10,000 ] } ← { "job_id": "…", "total": 4356, "credits_held": 13068 } // poll the job
1 cr mail-host · 3 cr deepevery verification is charged

Verification as a service. Mail-host checks instantly, deep verification in bulk. Every email we deliver is labeled unverified, and you verify it on demand — the verdict carries its own verified_at. Every verification is charged; an address verified in the last 60 days comes back at once, with its original date. Verify ours, or bring your own list.

fresh crawlPOST /v1/scrape
→ /v1/scrape { "domains": [ "examplepaving.com", …up to 500 ] } ← { "job_id": "9b1d7e40-…", "credits_held": 2 } ← { "domain": "examplepaving.com", "ok": true, "emails": [ "jordan@examplepaving.com" ], // same-domain only "phones": [ "2145550142" ], "socials": { "facebook": "…", "instagram": "…" }, "scraped_at": "…T09:15:44Z" }
2 credits / domainfailed crawls: 0 credits

Off the live site, dated honestly. Point us at any domain list and get the emails, phones and socials on each site — crawled now, or a crawl we did in the last 30 days, served with its real scraped_at. Never a stale database dressed up as new.

live local searchGET /v1/live
→ /v1/live/places?q=roofing+companies&location=Austin,+TX ← { "live": true, "fetched_at": "…T09:16:01Z", "records": [ { "name": "…", "rating": 4.8, "rating_count": 213, "phone": "…", "website": "…", "address": "…", "latitude": 30.26, … } ] }
2 cr / page of 10 places · 1 cr / web querynever served stale > 24h

The live web, on tap. Real-time local business results and organic web search — ratings, phones, websites, coordinates — for when your agent needs what's true this minute.

skip-trace & propertyactivating
→ /v1/skiptrace/address { "address": "1402 Oak St", "city": "Dallas", "state": "TX", "zip": "75204" } ← { "records": [ { "owner_first_name": "Jordan", "owner_last_name": "Doe", "cell_1": "…", "cell_1_dnc": false, "phone_1_type": "landline", "email_1": "…" } ], "credits_used": 6 } // no match = 0
6 cr address · 4 cr reverse phoneper full match only

Owner identity resolution. Address → owner name, phones with line-type and DNC flags, email. Built to complete our 220K owner_name_only records — and any address list you bring. Marketing use only, never FCRA purposes.

list enrichmentcoming soon
// coming soon — not callable yet; the shape below is the plan → bring your own CSV { "rows": [ { "company": "Example Paving", "domain": "examplepaving.com" }, … ] } ← { "rows": 2000, "matched": 1840, "filled": { "phone": 1712, "email": 1105, "decision_maker": 903 } } // illustrative
per enriched rowunmatched rows: 0 credits

Bring your own list — coming soon. Send a CSV keyed on whatever you have — company, domain, address, phone — and we match every row to the store and fill firmographics and decision-maker contacts from it. You get back a scored file plus analytics on exactly how many rows we matched and which fields we filled. Until then, pull matching companies with search and reveal their contacts.

03 · Pricing & the rules

Per record. Never per call, never per seat.

One credit balance across every product. No subscription, no seats, no feature gates, no minimums. These aren't marketing lines — they're enforced in the billing engine and written into the API contract:

Counts are free

Size any filter combination with /v1/count — always 0 credits. Know exactly what a market looks like before you spend anything.

Estimates are free

Add estimate=true to any paid GET and get the exact credit cost back without executing. No surprises, ever.

No match, no charge

Empty reveals, emails that could not be verified, unmatched skip-traces, dead crawls — 0 credits. You pay for data received, not for asking (a deep check with no verdict pays only for the mail-host answer it returned).

Deduped before billed

A contact is one record: one person at one company. The same contact appearing twice in a result never bills twice; a person listed at two companies is two contacts. Billing equals distinct records delivered.

Holds that settle honestly

Bulk jobs hold the maximum up-front, settle to actual completions, and refund the difference automatically.

Safe retries

Send an idempotency key and a retried request replays the original response — same records, no second charge. Network blips can't double-bill you.

Budget brakes for agents

Contact reveals over MCP are two-step: estimate first, reveal only with confirm under a max_credits ceiling. Company pulls and live searches bill when called — size with free counts, use estimate, keep limits small, and ask for a per-key daily cap.

The delivery ledger

Records you've bought are excluded from future pulls automatically, so a repeated pull never bills a record you already own, and a direct lookup of a company you already received is free. Re-reading records on purpose in browse mode (exclude_delivered=false) is billed like any pull. Detail below.

Two documented exceptions

Live retrieval costs us per request whatever comes back, so it bills per request: live web search per query and live local results per page fetched, even when the answer is empty. Those are the only two, and the price table below says so.

ActionCreditsWhat you get / when you pay
Count / estimate0Any filter, any entity, any time. Free forever.
Company record1 / recordFull 24-field profile — search result or direct lookup, same schema.
Contact reveal3 / contactNamed decision-maker with channels. Only billed when it carries a channel you asked for.
Email verify — mail-host1 / emailInstant domain-level deliverability. Every check is charged; an answer verified in the last 60 days comes back at once with its original date.
Email verify — deep3 / emailFull mailbox-level verification: valid / catch-all / invalid. Bulk up to 10,000. Every verdict is charged, one we already hold too (it comes back with its original date).
Fresh crawl2 / domainLive-site emails, phones, socials. Only successful crawls bill.
Live local results2 / page10 live places per page with ratings, phones, websites, coordinates — walk up to 10 pages per call. Billed per page fetched, even when empty.
Live web search1 / queryOrganic results + knowledge panel when present.
Skip-trace addressactivating6 / matchOwner name, phones with line-type + DNC flags, email. No match = 0.
Reverse phoneactivating4 / matchPhone → owner identity + address. No match = 0.
List enrichmentcoming soon—Match your CSV to the store, fill firmographics + decision-makers. Priced when it opens.

Credit packs — the real prices

list as published 2026-10-25 · live list: GET /v1/billing/packs
Start free Talk to us 100 free credits on sign-up · no card

A new account starts with 100 free credits on sign-up, no card (one free trial per person, at most three per company email domain) — enough to run the whole quick start. When you need more, buy a pack in the console: one balance across every product, and the credit price of each action is the standard table above — your account's own table is GET /v1/schema → credits. The pack list is the server's own — GET /v1/billing/packs — shown here live when the API answers, otherwise as published on 2026-10-25. Need more than the largest pack? Talk to us.

The delivery ledger, drawn

You pull 1,000 janitorial companies in Texas today. Next month you pull "the same list" again. On most platforms you just paid again for much of it. Here, the ledger remembers what your account owns — the same request simply returns the next batch:

Pull #1 · todaysame filters, limit 1000
Pull #2 · next monthidentical request
Pull #3 · wheneveridentical request

■ delivered this pull · ■ already yours — skipped, never re-billed · no offsets, no cursors, no overlap — and redeliver_after_days recycles old records when you want them back in play

04 · Built for agents

Your AI already knows how to use this.

Connect the hosted MCP server once and Claude, ChatGPT or your own agents query the store mid-conversation — no exports, no CSV round-trips, no glue code. Counting is free, so agents explore aggressively; contact reveals need an explicit confirm under a credit ceiling, every paid tool but the one-price verify_email prices itself free with estimate, an idempotency_key makes a retry free, and a per-key daily cap keeps the rest bounded.

connect onceany MCP client
$ claude mcp add --transport http smarterdata https://mcp.smarterdata.ai/mcp \ --header "x-api-key: sk_live_…" # tools your agent gets: count_businesses free · size any market count_contacts free · decision-maker contacts on any filter search_businesses 1 cr/record · bills on call · estimate free · auto-advancing get_schema free · filters, niche words, prices get_business 1 cr · 0 if already yours · same record as search find_contacts 3 cr/contact · two-step: estimate → confirm under max_credits live_places_search 2 cr/page · live map-listing results web_search 1 cr/query · live web results verify_email 1 cr/check · mail-host check · every check charged
you ask, in plain english
you: "How many roofing companies in Phoenix have a named owner I could actually reach?" agent: 188 roofing companies in Phoenix — 19 with a named decision-maker, 16 carrying a mobile number. credits spent: 0 — counting is free
spending needs your yes
you: "Pull the top 50 with their owners' emails." agent: estimate says ~176 credits for 50 companies + 42 revealed contacts (50 × 1 + 42 × 3). Proceed? you: "go, cap it at 200" agent: done — 176 credits, 50 rows delivered. The emails are labeled unverified — verify them first? (1 cr each)

Or hit the API directly

Plain REST, one header, one envelope. Every successful metered answer carries your remaining balance; every error is one machine-stable shape. If your stack speaks HTTP, it speaks Smarter Data. Counts and estimate=true are free, so you can build and price every call before you spend a real credit. Every endpoint, parameter, credit price and error code is in the API reference; keys come from the console.

api.smarterdata.aiREST
$ curl -H "x-api-key: sk_live_…" \ "https://api.smarterdata.ai/v1/companies?niche=janitorial&state=TX&limit=25" { "ok": true, "entity": "companies", "count": 25, "total_matching": 3958, "has_more": true, "credits_used": 25, "credits_remaining": 99975, "records": [ … ] } # every error, one shape: { "ok": false, "error": { "code": "insufficient_credits", "message": "…" }, "credits_used": 0 }

05 · Who it's for

Same store, different leverage

AGENCIES / OUTBOUND

Lead-gen & outbound teams

Build a verified list for any client territory in minutes — niche × ZIP × "has a named owner with a mobile" — then verify at send-time so bounces stop killing your domains. We run our own outbound on this exact store; it exists because we needed it.

SAAS / PLATFORMS

B2SMB software builders

Selling to contractors, restaurants or clinics? Power onboarding autocomplete, TAM sizing, and in-product prospecting from one API — fixed schema, explicit nulls, no per-seat math as your user count grows.

AI / AGENTS

Agent & workflow builders

Give your agent a data tool that's actually safe to hand it: free exploration, free estimates before spending, max_credits ceilings on contact reveals, per-key daily caps, and idempotent retries. MCP-native from day one, not an afterthought wrapper.

DATA / REVOPS

Data & RevOps teams

Fill CRMs from 20.8M profiles, let our delivery ledger keep repeat pulls from re-billing what you own, and re-verify aging emails in 10K-batch jobs — holds settle to actuals, misses refund.

06 · Straight answers

The honesty labels most vendors skip

Revenue is modeled

Revenue figures are estimates, labeled as estimates — segment on the band, never quote the number as reported financials. We won't pretend otherwise.

Verification ages

An email verified last quarter is not verified now. Every email we deliver is labeled unverified; verify it on demand and the verdict carries verified_at — re-verify before a big send, not a quiet lie.

Franchise noise is flagged

A national chain's HQ inbox is not the local manager. Chain-inherited contacts are flagged and withheld by default — you opt in, not out.

Compliance is explicit

Licensed for B2B sales & marketing; never FCRA-regulated decisions. A suppression-list endpoint is planned. Until it ships, send opt-outs to privacy@smarterdata.ai: we remove the record in the next data refresh and confirm by email.

You own the channel

TCPA/DNC for calls and texts, CAN-SPAM for email — that's your responsibility, and we say so. DNC flags we return (with skip-trace) are information, not permission.

Sources, not secrets

Every record names its origins — business directory, map listing, public records, the company's own web presence, or live web — so you know why we believe it.

07 · FAQ

Questions, answered straight

Is there a subscription or a minimum?
No. Credits are the only thing you buy, they're spent per record delivered, and counting/estimating is free forever. A new account starts with 100 free credits on sign-up, no card (one free trial per person, at most three per company email domain); when you need more, buy a credit pack in the console (GET /v1/billing/packs lists them — from 2,000 credits for $49 up to 250,000 for $3,499); the credit price of every action is one public table (GET /v1/schema → credits).
Where does the data come from?
Four origin classes, named on every record: business_directory, map_listing, public_records and web_presence (the company's own site), plus live_web for real-time queries. Multiple origins are cross-checked and deduplicated into one row per business with a quality score.
What exactly counts as a "named decision-maker"?
A person's name in an owner, executive, operational or financial role, carrying an email or a mobile number. Page phrases that only look like names are screened out with a 29,000-entry given-name dictionary, labeled other, and never count; neither do generic inboxes or franchise HQ contacts. The free contact counts and the paid reveals use the same strict definition, so the number you size is the number you get. A contact is one person at one company: a person listed at two companies is two contacts.
How fresh is it, and what about wrong data?
The warehouse is rebuilt periodically (current build: 2026-09-02), and the part that decays fastest — email deliverability — is verified when you ask (POST /v1/verify/email), not at crawl time. That's the honest architecture: no vendor's static database has fresh emails, so we built verification and live crawling into the same API instead of pretending. Every email we deliver is labeled unverified until you verify it.
Can I export to CSV or does it live behind the API?
Records are fixed-schema JSON that maps 1:1 to CSV columns — every field always present, unknowns as explicit nulls. Pull via API, MCP, or ask us for a one-time flat-file delivery. What you've bought stays licensed to you: repeat pulls skip it automatically, a direct lookup of a company you already received is free, and re-reading records on purpose in browse mode (exclude_delivered=false) is billed like any pull.
What happens when my agent goes rogue?
Contact reveals over MCP are two-step (estimate, then an explicit confirm) under a max_credits ceiling. Company pulls and live searches bill when called — search_businesses up to 200 records per call — so size with the free counts, use estimate: true, keep limit small, and ask us to set a daily credit cap on the key your agent uses. Give a paid call an idempotency_key and a retry replays the original answer for 0 credits, so a flaky network can't double-bill; per-key rate limits cap burst spend; every successful response shows the remaining balance.
Is this legal to use for cold outreach?
The data is licensed for B2B sales and marketing in the U.S. Channel compliance is yours: TCPA/DNC for calling and texting, CAN-SPAM for email. Line types and DNC flags arrive with skip-trace (activating); a bring-your-own suppression list is planned, and until it ships you send opt-outs to privacy@smarterdata.ai — flags are information, not permission. Never for FCRA-regulated decisions (credit, employment, tenancy, insurance).
What's on the roadmap?
Skip-trace & property owner resolution is activating now, followed by bring-your-own-list enrichment and a suppression-list endpoint. Next: phone line-type verification at scale, richer firmographic layers, and territory analytics. The architecture is layered — new capabilities plug into the same records, same billing, same key.

Start free

Data this good shouldn't cost enterprise money.

Sign up, get 100 free credits on sign-up, no card, and run the whole quick start on them. Buy a pack when you need more. Questions, or more volume than the largest pack? Talk to us.

The family try/smarter Smarter Outbound Smarter Inbound