smarter/data

B2B local data · API + hosted MCP · Early access

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, direct mobiles and verified-pattern emails where we hold them — filterable by state, city, ZIP, industry, service line and size, plus verification, fresh crawling, live local search and bring-your-own-list enrichment, 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.

Request early access See what it does Opening to builders · no subscription required
mcp://smarterdata.ai · sessionlive
// your agent, mid-task — sizing is always free count_businesses { "niche": "general_contractor", "state": "TX" } { "count": 61240, "credits_charged": 0 } count_contacts { "niche": "general_contractor", "state": "TX" } // named decision-makers, still free { "count": 14807, "credits_charged": 0 } find_contacts { "business_id": "bx_91f2…", "channels": "email,cell" } { "estimate": "2 credits for 2 contacts", // nothing charged yet "hint": "re-run with confirm:true to reveal" } find_contacts { "business_id": "bx_91f2…", "confirm": true, "max_credits": 10 } { "records": [ { "name": "J. Doe", "title": "Owner", "email": "j***@examplepaving.com", // personal-pattern, verifiable "cell": "+1 (•••) •••-••••" }, … ], "credits_charged": 2 }
20.8MU.S. local businesses
5.6MDirect mobile numbers
4.0MNamed-person emails
47,135ZIP codes covered
35Industry verticals

01 · The store

What's actually in it — measured, not marketed

Every number on this page is a live count from the serving database, not a rounded-up brochure figure. 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-maker20%
Multi-service detected27%

every company row: 30+ fixed columns · unknown = explicit null

Largest verticals · companies on file

Restaurants & food2.38M
Education1.18M
Personal care1.06M
Retail997K
Manufacturing942K
Financial services898K
Automotive889K
Medical & dental810K
Real estate643K
General contractors637K

+ 25 more verticals: hospitality, apartments, grocery, security, fitness, moving…

company record1 credit
{ "business_id": "bx_91f2c4…", "name": "Example Paving Co.", "niche": "general_contractor", "niche_refined": "paving_contractor", "naics": "237310", "street": "1402 Oak St", "city": "Dallas", "state": "TX", "zip": "75204", "lat": 32.8007, "lon": -96.7899, "phone": "2145550142", // 10-digit, normalized "domain": "examplepaving.com", "employees_band": "10-49", "revenue_band": "1-10M", // modeled estimate, labeled "service_lines": ["paving", "concrete", "sealcoating"], "is_multi_location": false, "quality_score": 0.94, "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", "line_type": "mobile" } }, "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

6.8M records. A named individual with a direct channel — personal-pattern email and/or mobile. 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.6M records. A reachable company mailbox with no named person. Honest reach when no human is published.

owner_name_only

220K records. A verified owner/officer name with no direct channel yet — built to pair with skip-trace.

Slice the store on any combination of:

state · multicityzipniche · 35 verticalsservice_line · multi-service awarenaics · prefix matchemployees_bandrevenue_bandname · containshas_websitequality_min

Decision-maker coverage is a free aggregate countcount_contacts tells you how many named decision-makers sit behind any filter before you pull a single row. You buy companies first, then reveal their 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. One credit balance.

Warehouse search, people, verification, fresh crawling, live local results, skip-trace, and bring-your-own-list enrichment — 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&zip=33101,33125 &service_line=hvac&employees_min=5&limit=500 { "count": 500, "total_matching": 1893, "has_more": true, "credits_used": 500, "records": [ full 30-column 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/bx_91f2…/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 a direct channel. You're only billed for contacts carrying a channel you asked for — and when we don't already hold one, we enrich the gap on the fly and charge only for what we deliver.

email verificationPOST /v1/verify
/v1/verify/email { "email": "jordan@examplepaving.com", "smtp": true } { "job": "vj_88a1…", "hold": 3 } // held, settled on completion { "status": "valid", "verified_at": "…T09:14:02Z" } /v1/verify/bulk { "emails": [ …up to 10,000 ] } { "valid": 2833, "catch_all": 1121, "invalid": 402 }
1 cr mail-host · 3 cr deepcached checks: 0 credits

Verification as a service. Mail-host checks instantly, deep verification in bulk. Statuses age honestly — a record says unverified until it isn't. Verify ours, or bring your own list.

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

Data as of right now. Point us at any domain list and get today's emails, phones and socials off the live site — not whenever a database was last refreshed.

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 places · 1 cr web / querynever served stale > 24h

The live web, on tap. Real-time local business results and organic web search — ratings, hours, confirmed phones — 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" } { "owner": "Jordan M. Doe", "phones": [ { "value": "…", "line_type": "mobile", "dnc": false } ], "email": "…", "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 enrichmentPOST /v1/enrich
/v1/enrich // bring your own CSV — grab enrich-sample.csv { "rows": [ { "company": "Example Paving", "domain": "examplepaving.com" }, ] } { "job": "ej_7c20…", "rows": 2000, "matched": 1840, "filled": { "phone": 1712, "email": 1105, "decision_maker": 903 }, "credits_used": 1840 } // per enriched row, unmatched free
per enriched rowunmatched rows: 0 credits

Bring your own list. Send a CSV keyed on whatever you have — company, domain, address, phone — and we match every row to the store, fill firmographics and decision-maker contacts, and enrich the gaps on the fly. You get back a scored file plus analytics on exactly how many rows we matched and which fields we filled.

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 request and get the exact credit cost back without executing. No surprises, ever.

No match, no charge

Empty reveals, failed enrichments, unmatched skip-traces, dead crawls — 0 credits. You pay for data received, not for asking.

Deduped before billed

A contact is one record. The same person appearing twice in a result never bills twice. 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 caps for agents

Every paid MCP reveal is two-step: estimate first, execute only with confirm + a max_credits ceiling. Your agent can't run away with your balance.

The delivery ledger

Records you've bought are excluded from future pulls automatically. You will never pay for the same record twice. Detail below.

One documented exception

Live web queries bill per query even at zero results — live retrieval costs us per query regardless. It's the only exception, and it's written down.

ActionCreditsWhat you get / when you pay
Count / estimate0Any filter, any entity, any time. Free forever.
Company record1 / recordFull 30-column profile — search result or direct lookup, same schema.
Contact reveal1 / contactNamed decision-maker with channels. Only billed when it carries a channel you asked for.
List enrichment1 / enriched rowMatch your CSV to the store, fill firmographics + decision-makers. Unmatched rows cost 0.
Email verify — mail-host1 / emailInstant domain-level deliverability. Cached results cost 0.
Email verify — deep3 / emailFull mailbox-level verification: valid / catch-all / invalid. Bulk up to 10,000.
Fresh crawl2 / domainLive-site emails, phones, socials. Only successful crawls bill.
Live local results2 / queryUp to 10 live places with ratings, phones, websites, coordinates.
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.

Credit rates are set per account during early access — founding accounts lock their rate in. Ask for a quote — bring your volume, we'll bring a number that makes the incumbents look silly.

The delivery ledger, drawn

You pull 1,000 janitorial companies in Texas today. Next month you pull "the same list" again. On every other platform you just bought 60% of it twice. Here, the ledger remembers what your key 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 (free to re-browse) · 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; spending requires an explicit confirm under a credit ceiling, so they can't burn your balance.

connect onceany MCP client
$ claude mcp add --transport http smarterdata https://mcp.smarterdata.ai \ --header "x-api-key: sk_live_…" # tools your agent gets: count_businesses free · size any market count_contacts free · named-DM counts on any filter search_businesses 1 cr/record · auto-advancing get_business 1 cr · full profile find_contacts two-step: estimate → confirm under max_credits verify_email 1-3 cr · live deliverability
you ask, in plain english
you: "How many roofing companies in Phoenix have a named owner I could actually reach?" agent: counts 832 with a named decision-maker, 514 carrying a direct mobile. credits spent: 0 — counting is free
spending needs your yes
you: "Pull the top 50 with their owners' emails." agent: estimate says ~92 credits for 50 companies + 42 revealed contacts. Proceed? you: "go, cap it at 100" agent: done — 92 credits, 50 rows delivered, every email labeled with verify status.

Or hit the API directly

Plain REST, one header, one envelope. Every response carries your remaining balance; every error is one machine-stable shape. If your stack speaks HTTP, it speaks Smarter Data. Build against a free synthetic sandbox — identical schema, zero real data — until you're ready to spend a real credit.

api.smarterdata.aiREST
$ curl -H "x-api-key: sk_live_…" \ "https://api.smarterdata.ai/v1/companies?niche=janitorial&state=TX&employees_min=5&limit=25" { "ok": true, "entity": "companies", "count": 25, "total_matching": 3417, "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, estimates before spending, hard max_credits ceilings, and idempotent retries. MCP-native from day one, not an afterthought wrapper.

DATA / REVOPS

Data & RevOps teams

Enrich CRMs against 20.8M profiles, dedupe against our delivery ledger instead of building your own suppression logic, 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. Statuses carry timestamps and decay honestly — a stale check reads as unverified, not as 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. Upload your own suppression list and those values never come back to your key. CCPA deletions honored store-wide.

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 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. Early-access accounts negotiate their credit rate directly — founding accounts lock it in.
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 real person's verified name — validated against a 29,000-entry given-name dictionary, not just "text found on a page" — holding an owner, executive, operational or financial role, carrying at least one direct channel (personal-pattern email or mobile). Generic inboxes and franchise HQ contacts never count. The free contact counts and the paid reveals use the same strict definition, so the number you size is the number you get.
How fresh is it, and what about wrong data?
The warehouse is continuously rebuilt, and the parts that decay fastest — email deliverability — are verified at your request time, 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. Emails that fail deep verification are marked store-wide so the next customer sees the truth too.
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 delivery during early access. What you've bought is yours to re-browse free, forever.
What happens when my agent goes rogue?
It can't spend past you. Paid MCP reveals are two-step (estimate → explicit confirm) under a max_credits ceiling, retries are idempotent so a flaky network can't double-bill, per-key rate limits cap burst spend, and every response shows the remaining balance. The worst an agent can do is count things — which is free.
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. We help — line types, DNC flags where known, your own suppression list enforced at the API — but 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. 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.

Early access

Data this good shouldn't cost enterprise money.

Tell us what you're building and how many records you need. Founding accounts get locked-in rates, direct support, and a say in what we build next.

The family try/smarter Smarter Outbound Smarter Inbound