Data APIs · Consumer · Business · New Homeowner · New Mover · REST · OpenAPI 3.0

Data APIs for US consumer, business & mover audiences. REST + JSON.

The official LeadsPlease® Data APIs expose four U.S. audience databases over one REST/JSON surface — Consumer (210M+), Business (18M+), New Homeowner, and New Mover. Every record ships with a USPS-validated postal address (CASS + DPV), plus email and phone where available, at high coverage. Consumer and Business refresh every 30 days; New Homeowner and New Mover refresh weekly. Bearer-token auth, OpenAPI 3.0 spec, polygon + radial + ZIP geos, 30+ demographics, signed CSV downloads. Same data engine that powers leadsplease.com checkout — exposed as endpoints you can call from any backend.

Live in TEST mode now ⚡ Intent Data — in-market signals ⚡ Subscriptions — auto-pilot lead push ★ Industry-first List Aggregation Bearer-token auth (JWT) USPS CASS-certified SOC 2 · GDPR · CCPA · CAN-SPAM
210M+
Consumer records
18M+
Business contacts
30+
Demographic selects
4
List types · Consumer · Business · New Homeowner · New Mover
13.8K
SIC codes searchable
⚡ Live Now · Daily Push ★ Industry-Leading Data Layer

Intent Data — an enhanced demographic field in the LeadsPlease® National Consumer Database. Percentile-scored. Layer with anything.

Intent Data isn't a separate dataset — it's an extra demographic field on every record in the LeadsPlease® National Consumer Database. Multiple intent categories (auto-in-market, kitchen-remodel, insurance-shopping, mortgage-refinance, switching-cell-carrier, and more) are each scored on a 1–100 percentile basis. Pick the top decile (P90+) for the highest-intent prospects, or widen to top quartile (P75+) for a larger audience. Then layer it with any other demographic in the database — income, age, homeowner status, presence of children, charity-donor flags, vehicle owned — to build precision audiences in seconds. Available via the LeadsPlease® Data API and across other LeadsPlease® platforms.

⚡ The Math

A standard demographic list converts at 0.5–1.5% on direct mail. The same audience filtered to verified in-market intent converts at 5–12%. That's 5–10× the response rate from the same mail spend — and intent-overlay lists sell for 30–60% more, so your 20% reseller margin compounds against a bigger ticket. Same direct-mail piece, dramatically better economics.

Where the signals come from

🔎
Search behavior
Anonymized search queries against high-intent keyword sets across 15+ partner publishers.
📑
Content engagement
Article reads, white-paper downloads, comparison-tool sessions on category-relevant content.
💳
Transaction patterns
Commerce-network activity that predicts category purchase within the next 30–90 days.
🏠
Life-event triggers
New movers, new homeowners, recently turned 65, baby on the way — the category-changers.
📺
Streaming + connected TV
Programmatic CTV exposure data tied back to households, deduplicated across devices.
📍
Geo-fence signals
Anonymized mobile-device dwell time at competitor locations, dealerships, retail centers.

How you'll use it

Intent appears as additional demographic fields on the existing Consumer Criteria object — one field per intent category, each carrying a percentile score. Pick the top decile (intent_auto_in_market: ["P90+"]) or widen to top quartile (intent_kitchen_remodel: ["P75+"]). Then layer with any other consumer demographic on the same Criteria call — income, age, homeowner, presence of children, vehicle owned. Example: top-decile auto-shoppers + household income $100K+ + age 35–55 + kids in the home, in five Phoenix-metro ZIPs — one Criteria object, one /counts call, one /lists call.

⚡ Live Now · Daily Push ★ Auto-Pilot Lead Delivery

Subscriptions API — fresh leads on autopilot. Save criteria once. Get matching new records the moment they're loaded.

Stop buying static monthly lists. Define your geo + demographics + Intent overlays once, set a delivery cadence, and every time the LeadsPlease® database loads new records that match your criteria, a fresh CSV lands in your inbox or webhook — incremental, deduplicated, never the same record twice. The hottest leads reach you while their intent is still hot.

⚡ Why this matters

A "new homeowner" is most valuable in the first 30 days after closing — the window when they're buying appliances, cable, lawn care, alarm, mortgage refi. Wait until your next monthly list pull and you've already missed half the spend window.

Subscriptions push those records to you the day they enter the database. Same logic for New Movers (30-day relocation window), people turning 65 (T65 Medicare AEP outreach has a fixed birthday-window), and everyone newly flagged in the Intent Data overlay — the auto-shopper, the kitchen-remodeler, the CRM-evaluator. Your follow-up arrives while their intent is still measurable.

Five subscription patterns we see daily

🏠
New Homeowner
~750K/mo. First 30 days = peak spend on appliances, lawn, security, mortgage.
📦
New Mover
~1M/mo. Switching utilities, insurance, banks, gyms in 30-day window.
🎂
T65 / Medicare
Fixed birthday window. AEP brokers can't afford to miss the 90-day eligibility runway.
Intent Data
Daily refresh. Auto-in-market, kitchen-remodel-in-market, switching-insurance — reach them while it's hot.
🎯
Saved Audiences
Any custom criteria — demographic + geo + Intent — pushed on your cadence.

How it works — three calls

1
Define criteria once
POST /search-criteria — geo, demographics, Intent overlays, contact data points. Reuses any criteriaId you've already created.
2
Create the subscription
POST /subscriptions with the criteriaId, your delivery channels, and a name. Returns a subscriptionId.
3
Receive only the new ones
Daily background check. When new records match, a fresh CSV is generated and delivered. Each delivery is incremental — you never get the same household twice.
// Example: weekly drop of new homeowners in five Phoenix-metro ZIPs,
// emailed every Monday at 8am AZ time.
POST /subscriptions
{
  "name": "Phoenix New Homeowners — weekly",
  "searchCriteriaId": "a9bae6d8-17bb-11f1-8fa0-0afff3a94407",
  "userId": 123,
  "deliveryChannels": ["EMAIL"],
  "metadata": { "costCenterId": "C1" }
}
★ Industry First · Unique to LeadsPlease®

List Aggregation API — merge any number of lists into one deduplicated CSV.

No other U.S. mailing-list API offers programmatic list aggregation. With one call, group any number of saved lists into a named aggregate; the response gives you a single signed CSV download with cross-list deduplication. Add or remove member lists at any time — the aggregate auto-regenerates on next download. The only other path is downloading N CSVs and reconciling them yourself in Pandas (or worse, Excel).

📖 Worked example · National insurance carrier

The setup: A national insurer offers a financial package targeted to seniors. Regional and local agents host monthly steak-dinner events and invite ~10 distinct demographic micro-segments (high-net-worth retirees, recent widows, military veterans, female heads of household 65+, etc.) per ZIP code. Every dinner has a different agent and a different ZIP catchment.

The problem before: Each agent emails the corporate marketing team a list-pull request, waits 3–5 days for 10 separate CSVs by demo, then either dedupes them in Excel themselves (a household of two seniors who fit three of the ten micro-segments would otherwise get three invitations) or hand-walks the file to a print vendor and hopes for the best.

With the Aggregation API integrated into the carrier's booking system: the agent picks a ZIP, sees live counts of all ten micro-segments in seconds (one /counts call per segment), enters the quantity they want from each, clicks Generate Invitation List. The booking system creates ten Criteria, fires ten List jobs, then a single /list-aggregations call — the cross-list deduplicated CSV lands in their print partner's API inbox. Total elapsed time: under 60 seconds. Same household never gets two invitations; the agent never opens Excel.

🥩 Agent-driven event invitations 📍 Multi-region direct-mail campaigns 📅 Quarterly mail drops merging saved searches 🎯 Roll up customer-segment exports

Data API vs. direct-mail APIs — we’re the data layer, not the print layer

Search "direct mail API" and you'll find Lob, Postalytics, PostGrid, PostcardMania, and Lettrlabs — all excellent print-and-mail APIs that take a CSV and turn it into postcards. None of them generate the audience CSV. That's the LeadsPlease® Data API. The cleanest stack: pull the audience from us, hand it to your print partner.

Capability LeadsPlease® Data API Lob / Postalytics / PostGrid PostcardMania / Lettrlabs
Generate audience from demographics ✓ 30+ selects, polygon geo — bring your own CSV — resells third-party data
USPS-verified consumer + business records ✓ 250M + 18M, CASS-certified — validates addresses you supply ~ via partner data
Intent Data (in-market signals) ✓ Percentile-scored field ✗ no ✗ no
List Aggregation (multi-list dedupe) ✓ Industry first ✗ no ✗ no
Subscriptions (auto-pilot fresh records) ✓ NHO/NM/T65 daily push ✗ no ✗ no
Print + mail postcards / letters — hand off to your print partner ✓ Full print fulfilment ✓ Full print fulfilment
Order minimum ✓ None ~ Per-piece minimums ~ 250–500 pcs typical
Free tier for development ✓ TEST creds, 1K count cap ~ Sandbox modes ✗ Account required
⚡ The integration pattern

If you’re building a direct-mail product, an SMB CRM, or a real-estate / insurance / mortgage platform: call our Data API to build the audience, then hand the resulting signed CSV URL to Lob, Postalytics, or PostGrid for print fulfilment. Your users get audience-selection + print in one flow; you charge a single bundled price; your stack stays focused. DataWidget® for Web-to-Print ships this exact pattern as a drop-in widget if you'd rather skip the API integration.

From auth to CSV in five calls

Every list-build follows the same pipeline. The Subscriptions endpoint wraps step 2–5 into a single recurring delivery for New Mover / New Homeowner.

1

Authenticate

POST /auth with username + password. Returns a 20-minute JWT to send as Authorization: Bearer <token>.

2

Define criteria

POST /search-criteria with list type, geos (manual/radial/polygon), demographics, and which contact data points to include (direct mail, email, phone). Returns a criteriaId.

3

Get count

POST /counts with the criteriaId. Returns the exact number of records that match. Rate-limited to 10/min.

4

Create & download

POST /lists → status URL. Poll until Completed. Response includes a signed download URL for the generated CSV.

Endpoint quick reference

💡 Same backend, different surface: the embeddable DataWidget® for Web-to-Print calls these exact same endpoints behind the scenes. Build with the API directly, or drop the widget into your audience-selection UX with a 30-second embed — they share the data layer.

Eight core endpoints cover 95% of integrations. Full schemas in the Swagger UI.

POST/auth

Authenticate

Trade username + password for a 20-minute JWT. No prior token required.

POST/search-criteria

Create criteria

Persist a list type + geo + demographic combo. Returns a criteriaId reusable across count + list calls.

POST/counts

Get count

How many records match these criteria? 10 calls/min. Use this for live UI estimates and pricing previews.

POST/lists

Create list

Triggers async CSV generation. Returns a status URL to poll.

GET/lists/{id}

Check list status

Status flips Pending → Completed; once complete, response includes a signed download URL.

★ Industry First POST/list-aggregations

Aggregate lists — unique to LeadsPlease®

Merge any number of completed lists into a single, deduplicated CSV. Add or remove member lists at any time; the aggregate auto-regenerates on next download. No other U.S. mailing-list API offers this — you'd otherwise have to download N CSVs and dedupe yourself in Pandas. Powers multi-region campaigns, quarterly mail drops, and saved-search rollups.

GET/demographic-categories

Discover filters

Fetch the full demographic catalog for a given list type and affiliate code. Drives dynamic UIs.

GET/sic-codes/search

SIC lookup

Find SIC codes by description (e.g. ?description=Restaurant) or fetch the full 13,806-code catalog.

⚡ Auto-Pilot POST/subscriptions

Subscriptions — fresh leads, daily push

Save criteria once; receive only newly-loaded matches on your cadence. Powers New Homeowner / New Mover / T65 / Intent Data automated drops. Incremental, deduplicated, EMAIL delivery (more channels coming).

⚡ Live Now · Daily Push ★ Industry-Leading Data Layer 5–10× Conversion Lift
POST /search-criteria + demographics: [{name: "intent_auto_in_market", codes: ["P90+"]}, ...]

⚡ Intent Data — enhanced demographic fields, percentile-scored, layerable with any other demo

Available via the LeadsPlease® Data API and other LeadsPlease® platforms. Multiple intent categories (auto-in-market, kitchen-remodel, insurance-shopping, mortgage-refinance, switching-cell-carrier, etc.) appear as additional fields on the existing Consumer Criteria object — each scored on a 1–100 percentile basis. Pick the top decile (intent_auto_in_market: ["P90+"]) for highest-intent prospects, or top quartile (["P75+"]) for a larger audience — then combine with any other consumer demographic (income, age, homeowner, children, vehicle, donor flags) on the same call. Same /counts, same /lists, same workflow — richer targeting. Direct-mail response rates lift from 0.5–1.5% to 5–12%.

Signal sources: search behavior · content engagement · transaction patterns · life-event triggers · connected-TV exposure · geo-fence dwell time. Refreshed continuously; scoring runs daily. See the full Intent Data microsite →

Run a real call right now

Below is the exact pipeline that powers the LeadsPlease® checkout. Every snippet is copy-paste ready against TEST. Swap the base URL to https://api.leadsplease.com when you're ready for live.

Want the full interactive runner?

The Swagger UI gives you in-browser request bodies and "Try it out" against TEST — no client setup needed.

Open Swagger UI →

1Authenticate — trade credentials for a JWT

POST your username and password. The response includes accessToken — valid for 20 minutes. Re-call this endpoint when it expires; no refresh-token flow needed.

# Trade credentials for a JWT (TEST environment)
curl -X POST https://api-test.leadsplease.com/api/v1/auth \
  -H "Content-Type: application/json" \
  -d '{"username":"john@example.com","password":"yourpassword"}'

# → { "accessToken": "eyJhbGciOiJIUzUxMi..." }
const r = await fetch('https://api-test.leadsplease.com/api/v1/auth', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({ username, password })
});
const { accessToken } = await r.json();
import requests

r = requests.post(
    "https://api-test.leadsplease.com/api/v1/auth",
    json={"username": username, "password": password},
)
access_token = r.json()["accessToken"]

2Create criteria — pick list type, geos, demographics

Below: a Consumer list across two ZIP codes (Scottsdale 85255 + Flagstaff 86001), filtered to high-value home owners who are December birthdays and donate to animal-welfare or cultural causes.

curl -X POST https://api-test.leadsplease.com/api/v1/search-criteria \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d @criteria.json

# → { "id": "a9bae6d8-17bb-11f1-8fa0-0afff3a94407" }
{
  "listType": "consumer",
  "geoCriteriaType": "manual",
  "affiliateCode": "lp",
  "contactDataPoints": ["direct_mail"],
  "geos": [
    { "name": "85255", "type": "zip" },
    { "name": "86001", "type": "zip" }
  ],
  "demographics": [
    { "name": "charityDonor",        "codes": ["aw", "cc"] },
    { "name": "current_home_value",  "codes": ["Q", "R", "S"] },
    { "name": "personbirthmonthonly", "codes": ["12"] }
  ]
}

3Get count — how many match?

Rate-limited to 10/min. Use this for live count estimates as the user adjusts filters in your UI.

curl -X POST https://api-test.leadsplease.com/api/v1/counts \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"criteriaId":"a9bae6d8-17bb-11f1-8fa0-0afff3a94407"}'

# → { "count": 1247 }

4Create list — trigger async CSV generation

Returns a status URL. Poll it until status flips from Pending to Completed; the same response then includes a signed download URL.

curl -X POST https://api-test.leadsplease.com/api/v1/lists \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"criteriaId":"a9bae6d8-17bb-11f1-8fa0-0afff3a94407","name":"AZ donor list"}'

# → {
#     "id": "list_4f8a...",
#     "status": "Pending",
#     "statusUrl": "https://api-test.leadsplease.com/api/v1/lists/list_4f8a..."
#   }

5Poll status & download

Typically 30–90 seconds end-to-end depending on list size. The download URL is signed and time-limited.

curl https://api-test.leadsplease.com/api/v1/lists/list_4f8a... \
  -H "Authorization: Bearer $TOKEN"

# → {
#     "id": "list_4f8a...",
#     "status": "Completed",
#     "downloadUrl": "https://api-test.leadsplease.com/files/list_4f8a.csv?signature=..."
#   }

Bonus — one-shot SIC keyword lookup

No auth required. Useful for autocomplete in business-list builders.

curl 'https://api-test.leadsplease.com/api/v1/sic-codes/search?description=Restaurant'

# → [
#     { "sicCode": "5812", "description": "Eating Places", "parentCode": "58" },
#     { "sicCode": "5812008", "description": "Restaurants - Italian", "parentCode": "5812" },
#     ...
#   ]

API Reference — live Swagger UI

Embedded directly from the LeadsPlease® OpenAPI 3.0 spec. Expand any endpoint to see request/response schemas, parameter types, example payloads, and the inline "Try it out" runner. Same source-of-truth that powers the upstream Swagger UI — just rendered here so you don't bounce off the docs site.

OpenAPI 3.0.1 · live spec

Six common patterns

Patterns we see most often in the wild. Most teams ship something working in less than a day — the data is real, the spec is OpenAPI, and the polling pattern is well-trodden.

⚡ Intent Data · 5–10× Lift
Direct Mail · Auto · Insurance · Home Services

Find the 2–5% who are buying right now — ignore the other 95%

Standard demographic mail converts at 0.5–1.5%. Layer the Intent Data overlay (auto-in-market, kitchen-remodel-in-market, switching-insurance-in-market, etc.) and the same audience converts at 5–12%. Solar installer mailing 10K homes hits the 200–500 actively quoting now — not the 9,500 who don't care. Same postage, 5–10× the response. Intent overlays sell for 30–60% more, so reseller margin compounds against a bigger ticket.

consumer demographics + intent_auto_in_market: ["P90+"] + age + income + presence of children + ZIPs
Direct Mail Platform

Embed list-building inside your postcard tool

Print & mail companies (postcard apps, EDDM platforms) call /counts live as the user paints a polygon on a map, then /lists at checkout. Their customers never leave their app; LeadsPlease® is the data backend.

geoCriteriaType=polygon · /counts (live) · /lists at checkout
⚡ Subscriptions API · Real Estate · Insurance · Home Services

Recurring auto-pilot feeds — New Homeowner, New Mover, T65, Intent Data

Real-estate apps, Medicare AEP brokers, and home-service marketers subscribe to a saved Criteria once and receive a fresh CSV the moment new matching records load — never the same household twice. The first 30 days after a move or close are the peak spend window; Subscriptions delivers those records the day they enter the database, not weeks later.

/subscriptions · searchCriteriaId · deliveryChannels=[EMAIL] · daily push
Insurance · Medicare

Turning-65 birthday targeting

Insurance brokers buy weekly lists of people turning 65 in the next 90 days for Medicare Annual Enrollment outreach. personbirthmonthonly + age_min/age_max filters carve a precise birthday cohort.

listType=consumer · age_min=65, age_max=65 · birthMonth filter
B2B SaaS · Sales Enrichment

SIC-code prospecting at scale

Sales-tech tools fetch verified business contacts by 4-digit or 7-digit SIC, then enrich with employee size + sales volume + executive title. The /sic-codes/search endpoint powers the "find your industry" autocomplete.

listType=business · SIC + employee_code + sales_volume filters
Marketing Automation

Audience handoff into your ESP

Pull a list with contactDataPoints=[email], get a CSV signed URL, pipe directly into Klaviyo / HubSpot / Mailchimp via their import APIs. Lights-out workflow no human touches.

contactDataPoints=[direct_mail, email] · downloadUrl → ESP import
★ Aggregation API · Insurance · Financial Services

National insurance carrier — agent-driven steak-dinner invitations

A national insurer's local agents host monthly senior-financial events and invite ~10 distinct demographic micro-segments per ZIP (high-net-worth retirees, recent widows, veterans, female heads of household 65+, etc.). With the Aggregation API integrated into the agent booking system, an agent picks a ZIP, sees live counts of all 10 segments in seconds, enters the quantity wanted from each, clicks Generate Invitation List. The booking system fires 10 list jobs + one /list-aggregations call — deduplicated CSV lands in the print partner's API inbox in under 60 seconds. No Excel. No double-mailing the household that fits three of the ten micro-segments. No 3–5 day wait on corporate marketing.

10 × /search-criteria + /counts (live UI) + /lists + /list-aggregations → print partner
Mass Tort · Legal

Claimant-prospect lists by demo + geo

Legal-tech firms build claimant prospect pools by demographic + geography (e.g. women 50–75 within 50 miles of specific medical facilities). geoCriteriaType=radial + age + gender filters do this in one criteria object.

geoCriteriaType=radial · gender · age_min/max · radiusInMiles

Frequently asked

How do I authenticate?
POST your username and password to /auth — you receive a JWT access token valid for 20 minutes. Include it as Authorization: Bearer <token> on every authenticated endpoint. Tokens auto-rotate on expiry; just call /auth again.
What's the rate limit?
10 Count requests per minute, per API key. List creation, list status checks, aggregation, and subscription endpoints have no fixed minute-cap but are subject to fair-use review at high volumes — contact us for higher limits or dedicated infrastructure.
Do you have an OpenAPI / Swagger spec?
Yes — the live OpenAPI 3.0 spec is rendered as an interactive Swagger UI right here on the API Reference tab. Full request/response schemas, every parameter, and an inline "Try it out" runner.
How fresh is the data?
Consumer + business: monthly refresh, USPS CASS-certified for deliverability. New Homeowner + New Mover feeds refresh weekly. Intent Data overlay refreshes daily. The Subscriptions API guarantees you only ever receive records loaded since your last delivery.
How does pricing work? $ TWO-PART
Two tiers, two-part pricing. Tiers: Standard $199/mo (production access, all features, 99.9% SLA) or Enterprise (custom) for white-label, OEM, and high-volume with negotiated below-standard per-record rates. Both tiers cover API access, support, and rate limits only — records bill separately at the standard LeadsPlease® per-record data rates from the LP affiliate XML, the same per-unit prices the public LeadsPlease.com checkout uses. The key difference: the website enforces a $125–$300 minimum per order; the API does not. A 1-record lookup costs 1.2 cents; a 100-record drop costs $12.50; a 10K-record campaign drops to $500 at the volume tier. Volume discounts kick in at 2,500 / 5,000 / 10,000 / 25,000 / 50,000-record breakpoints. 30-day free TEST evaluation available on request.
How do Subscriptions work? ⚡ AUTO-PILOT
Define your criteria once, set your delivery channel, get fresh matching records pushed to you the moment they load. The flow is three calls: (1) POST /search-criteria with geo + demographics + Intent overlays — returns a criteriaId. (2) POST /subscriptions wrapping that criteriaId with a name, deliveryChannels, and metadata — returns a subscriptionId. (3) Done. A daily background job checks whether new data has been loaded that matches your criteria; when there is, a fresh CSV is generated and delivered. Each delivery is incremental — only records not previously sent. No double-mailing, no manual workflow, no "remind me to pull a new list next month." Currently delivers via EMAIL; webhook + S3 push channels on the roadmap. Ideal for New Homeowner (peak-spend 30-day window), New Mover (relocation 30-day window), T65 / Medicare AEP (fixed birthday eligibility), and the daily Intent Data refresh — the leads where freshness measurably moves response rates.
What's Intent Data, and why does it matter? ⚡ NEW
Intent Data is an enhanced demographic field in the LeadsPlease® National Consumer Database. 6,929 B2C signals across 25 categories and 206 sub-categories, plus 34,872 B2B topics. Multiple intent categories (auto-in-market, kitchen-remodel, insurance-shopping, mortgage-refinance, switching-cell-carrier, real-estate selling-a-home, and more) are each scored on a 1–100% percentile basis. Pick the top decile (P90+) for the highest-intent prospects, or widen to top quartile (P75+) for a larger audience. Then combine it with any other demographic in the database — income, age, homeowner status, presence of children, charity-donor flags, vehicle owned — on the same Consumer Criteria object. Layered on demographic + geographic targeting, intent lifts direct-mail response rates from a typical 0.5–1.5% to 5–12%, a 5–10× improvement. ⚖️ Marketing use only. Not a consumer report under FCRA. See the full LeadsPlease® Intent Data microsite →
What output formats are supported?
CSV today — UTF-8, comma-delimited, RFC 4180 quoted. JSON-line and Parquet on the roadmap (request via tech@leadsplease.com if that would unblock you). Direct mail + email + phone columns are toggled per-criteria via contactDataPoints.
Can I aggregate multiple lists into one file? ★ INDUSTRY FIRST
Yes — and this is unique to the LeadsPlease® Data API. The Lists Aggregation API groups any number of lists into a named aggregate, deduplicates across them, and yields a single signed-URL CSV download. Add or remove member lists at any time — the aggregate auto-regenerates on next download. No other U.S. mailing-list API exposes this; with anyone else you'd be downloading N separate CSVs and reconciling them in Pandas. Powers multi-region direct-mail campaigns, quarterly mail drops merging saved searches, and customer-segment roll-ups.
How is the LeadsPlease® Data API different from Lob, Postalytics, and PostGrid? ⚡ COMPARISON
Different layer of the stack. Lob, Postalytics, PostGrid, PostcardMania, and Lettrlabs are print-and-mail APIs — they take a CSV you supply and turn it into postcards / letters dropped at USPS. The LeadsPlease® Data API generates the audience CSV from 250M+ USPS-verified consumers, 18M+ businesses, plus New Homeowner / New Mover / Intent Data feeds and 30+ demographic selects. They are complementary, not competing. The cleanest direct-mail product stack: LeadsPlease® for the audienceLob/Postalytics/PostGrid for print fulfilment. We don't print mail; they don't generate audiences. If you want both surfaces in one widget, the embeddable DataWidget® for Web-to-Print ships the audience-selection layer for any print platform.

Prices

Two tiers, two-part pricing: a monthly access fee for the API itself plus a per-record data fee at the standard LeadsPlease® per-record data rates. No minimum per order.

⚡ How API pricing works

Monthly access fee + per-record data fee. No minimum per order.

The monthly tier covers API access, support, SLAs, and rate limits. Records are billed separately at the standard LeadsPlease® per-record data rates from the LP affiliate XML — the exact same per-unit prices the public LeadsPlease.com checkout uses. The difference: the website enforces a $125–$300 minimum per order; the API does not.

A 50-record order costs $6.25 (50 × $0.12495). A 1-record lookup costs 1.2 cents. Volume discounts kick in at 2,500 / 5,000 / 10,000 / 25,000-record breakpoints — the per-record data rates shown in the matrix below.

Per-record data rates — full matrix from LP affiliate XML

14 list-type variants × 8 volume breakpoints (1 · 500 · 1K · 2.5K · 5K · 10K · 25K · 50K). No order minimum on API. Click to view →

+
List type · variant 1+ 500+ 1K+ 2.5K+ 5K+ 10K+ 25K+ 50K+
Consumer · 210M+ U.S. households
Mail only consumer $0.12495 $0.12495 $0.12495 $0.11870 $0.09000 $0.05000 $0.04000 $0.03950
Mail + Email consumer_em $0.17500 $0.17500 $0.17500 $0.12950 $0.10000 $0.10000 $0.10000 $0.10000
Email only consumer_emo $0.17500 $0.17500 $0.17500 $0.12950 $0.15000 $0.10000 $0.10000 $0.10000
Mail + Email + Phone consumer_ema $0.12495 $0.12495 $0.12495 $0.11870 $0.09000 $0.05000 $0.04000 $0.03000
Business · 18M+ verified U.S. businesses
Mail only business $0.24950 $0.24950 $0.20000 $0.19000 $0.17000 $0.11000 $0.10000 $0.09000
Mail + Email business_em $0.35000 $0.35000 $0.20000 $0.19000 $0.18000 $0.17000 $0.16000 $0.15450
Email only business_emo $0.35000 $0.35000 $0.20000 $0.19000 $0.18000 $0.17000 $0.16000 $0.15450
Mail + Email + Phone business_ema $0.24950 $0.24950 $0.20000 $0.19000 $0.17000 $0.11000 $0.10000 $0.09000
New Homeowner · ~750K loaded per month
Mail only newhomeowner_v12 $0.39800 $0.37500 $0.30000 $0.30000 $0.22500 $0.18750 $0.15000 $0.13500
Mail + Email newhomeowner_v12_em $0.39800 $0.37500 $0.30000 $0.30000 $0.22500 $0.18750 $0.15000 $0.13500
Email only newhomeowner_v12_emo $0.39800 $0.37500 $0.30000 $0.30000 $0.22500 $0.18750 $0.15000 $0.13500
New Mover · ~1M loaded per month
Mail only newmover_v12 $0.39800 $0.37500 $0.30000 $0.30000 $0.22500 $0.18750 $0.15000 $0.13500
Mail + Email newmover_v12_em $0.39800 $0.37500 $0.30000 $0.30000 $0.22500 $0.18750 $0.15000 $0.13500
Email only newmover_v12_emo $0.39800 $0.37500 $0.30000 $0.30000 $0.22500 $0.18750 $0.15000 $0.13500

Variant codes are the canonical mailing-list-type-code values from lp.xml. Use them as-is when constructing Criteria. Single-use orders are billed at a 1.5× multiplier (per single-use-price-multiplier); multi-use is the default. Intent Data overlay adds a per-record uplift — final pricing at GA. For phone-append, hashed-email, and reseller-discounted rates contact tech@leadsplease.com.

Worked examples — consumer mail-only

1-record lookup
1.2¢
1 × $0.12495 · website would force a $124.95 minimum; API charges actual.
100-record drop
$12.50
100 × $0.12495 (consumer mail). Same data on website costs $124.95 — the API saves $112.
10K-record campaign
$500
10,000 × $0.05 (volume tier). Same per-record data rate as the website; API saves the per-order overhead.

⚡ Monthly access tiers

Enterprise

Custom

High-volume, white-label, OEM. Negotiated below-standard per-record rates.

  • Everything in Standard
  • Dedicated infrastructure
  • White-label / OEM licensing
  • Custom data points + filters
  • Slack-shared on-call channel
  • Volume-discounted per-record data rates below standard
  • Quarterly business reviews + roadmap input
  • DPA, SOC 2 + security questionnaire support
Contact sales →

Want to evaluate before committing? On the Get Started tab choose Free 30-day TEST — you'll get an API key restricted to Count calls only (no list downloads, no aggregation, no subscriptions), capped at 1,000 calls/month. All production traffic is on the Standard tier.

Get started

You're 60 seconds away from your API keys. Pick a plan, fill out the form, and we'll provision your key — Free 30-day TEST arrives instantly by email; Standard kicks off a Stripe Checkout for the $199/mo subscription and your LIVE keys land the moment payment confirms.

Apply for API keys

Choose a plan first — the form below adapts to what you pick.

Free TEST key arrives by email within seconds. No credit card required for TEST.

30-second smoke test (TEST environment)

Once you have a username/password from us, this is the smallest possible end-to-end smoke test — auth → criteria → count, in three calls.

#!/usr/bin/env bash
# Replace USERNAME / PASSWORD with the credentials we email you.

BASE="https://api-test.leadsplease.com/api/v1"

TOKEN=$(curl -s -X POST $BASE/auth \
  -H "Content-Type: application/json" \
  -d '{"username":"USERNAME","password":"PASSWORD"}' \
  | jq -r '.accessToken')

CID=$(curl -s -X POST $BASE/search-criteria \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"listType":"consumer","geoCriteriaType":"manual","affiliateCode":"lp","contactDataPoints":["direct_mail"],"geos":[{"name":"85255","type":"zip"}]}' \
  | jq -r '.id')

curl -s -X POST $BASE/counts \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d "{\"criteriaId\":\"$CID\"}"

# → { "count": 28934 }

Spec, status, support

📘 Swagger UI — embedded on the API Reference tab (live spec, every endpoint, inline test runner)

📄 Full API manualdeveloper reference (v1.3.4)

✉️ Tech supporttech@leadsplease.com — phone (866) 306-8674 — replies within one business day on free tier, four hours on Builder, one hour on Scale.

Compliance & data handling

The data and the API are CCPA-compliant, GDPR-ready, CAN-SPAM compatible, and SOC 2 Type II certified. Mailing addresses are USPS CASS-certified for maximum deliverability. Every CSV download URL is signed and expires in 24 hours; we don't store your queries or downloaded files beyond standard operational logging.

For DPA, security questionnaire, or vendor-onboarding paperwork, email legal@leadsplease.com.