Lead Export History - SMB Sales Boost API
Lead Export History has one entry per lead you have received, through any channel, with a snapshot of the lead's data from its most recent export or refresh. Refreshing and re-exporting these leads is always free: no credits are charged for leads you already received, even if their data has changed since.
Sticky export rule: once a lead is in your export history, it is free to re-export or refresh at any time. Credits are charged only for leads that are new to you (see Credits & Subscription).
Endpoints
GET /api/v1/lead-export-history- List your entries, newest export first, with pagination and optional filters. Each entry is one lead, with the time and channel of its most recent export and its stored snapshot (fields below). An invalid limit, offset or date returns 400.
GET /api/v1/lead-export-history/ids- Every tracking id matching the filters (databaseType, dateFrom, dateTo, exportMethod), newest first, with no pagination:
{"data": [1001, 1002], "totalCount": 2}. Use it to select entries for a bulk refresh or re-export. POST /api/v1/lead-export-history/refresh- Replace the stored snapshots with the latest live data. No credits charged. Send
trackingIdsor afiltersobject (databaseType, dateFrom, dateTo, exportMethod) to refresh every matching entry, at most 5,000 entries per request (afiltersobject that matches more than 5,000 entries, or none, returns 400). An invalidfiltersvalue also returns 400bad_request: adateFromordateTothat is not a valid date with a year from 1 to 9999 (for example 'filters.dateFrom must be a valid date (e.g. 2026-08-18)'), or adatabaseTypeorexportMethodthat is not a string. When atrackingIdsarray is sent, the filters are ignored and not checked. Returns{"data": {"results": [...], "refreshed": 2}}. In each result,changedsays whether the lead was updated since its snapshot (by its last-updated date),changedFieldslists the changed fields (kept until a refresh-and-export clears them), andrefreshedis false for an id that is not in your history or a lead that is no longer in the database. A refresh that finds newer data for a lead sendslead.updatedto your integrations, unless the lead is on your export blacklist. POST /api/v1/lead-export-history/re-export- Download the selected entries again as one file built from their stored snapshots (live data only for an entry that has no snapshot; nothing is refreshed). No credits charged.
trackingIdsis required (up to 5,000);formatIdis optional (one of your export formats; omitted or not found means a CSV with the default columns). Returns the file itself, not a JSON envelope. POST /api/v1/lead-export-history/refresh-and-export- Refresh the snapshots with live data, clear their changed-field markers, then download them as one file. No credits charged. Send
trackingIdsor afiltersobject (at most 5,000 entries, with the same 400 for an invalidfiltersvalue, as for refresh), plus an optionalformatId(as for re-export). Everything is checked before any entry changes: a 400 or 404 response leaves the entries unchanged (snapshots,leadLastUpdatedandlastChangedFields). Like refresh, it sendslead.updatedto your integrations for each lead it finds newer data for, unless the lead is on your export blacklist. Returns a file like re-export; its name starts withrefreshed-export-.
List Parameters
| Parameter | Description |
|---|---|
limit | Number of entries per page (1-200, default 50) |
offset | Pagination offset (default 0) |
databaseType | Filter by database: 'other' (the Main database). Any value is accepted and resolves to the Main database. Omit to list every export. |
dateFrom | Only entries whose most recent export is on or after this date (YYYY-MM-DD) |
dateTo | Only entries whose most recent export is on or before this date (YYYY-MM-DD; the whole day counts) |
exportMethod | Filter by the channel of each lead's most recent export: 'dashboard', 'api' (REST API and MCP), 'email_schedule', 'crm_push' (pushed to an integration from the dashboard, with POST /api/v1/integrations/:id/push-lead or with the MCP tool push_lead_to_integration) or 'enrichment' (a database match paid for in an enrichment run) |
Example Response
{
"data": [
{
"id": 1001,
"userId": "usr_abc123",
"leadId": 42,
"databaseType": "other",
"exportedAt": "2026-05-01T10:00:00.000Z",
"leadLastUpdated": "2026-04-28T08:00:00.000Z",
"exportMethod": "crm_push",
"leadSnapshot": {
"wCompanyName": "Acme Roofing",
"wPhonePrimary": "(555) 123-4567",
"wEmailPrimary": "[email protected]"
},
"lastChangedFields": null,
"lead": {
"wCompanyName": "Acme Roofing",
"wPhonePrimary": "(555) 123-4567",
"wEmailPrimary": "[email protected]"
}
}
],
"totalCount": 245,
"limit": 50,
"offset": 0
}
Entry Fields
id- the tracking id that the ids, refresh, re-export and refresh-and-export endpoints useuserId,leadId,databaseType- your account, the lead and its databaseexportedAt,exportMethod- when and through which channel the lead was most recently exportedleadLastUpdated- the lead's last-updated date as of the snapshot (refresh compares it to spot changes)leadSnapshot- the lead's data as stored at its most recent export or refresh (can be null on older entries); it uses the database field names (for example wCompanyName), not the names GET /api/v1/leads returns, and is shortened in the examplelead- the snapshot, or the live lead data when no snapshot is stored (null if neither exists)lastChangedFields- the lead fields a refresh found changed, or null
Notes
- One entry per lead: a later export of the same lead (including an integration push) updates its exportedAt, exportMethod and snapshot instead of adding an entry.
- Re-export and refresh-and-export return 404 when none of the ids match an entry with lead data, and 400 when some selected entries come from an older export that cannot be combined with the rest (export those separately).
- Re-export sends nothing to your integrations. Refresh and refresh-and-export send one
lead.updatedfor each lead they find newer data for, to your integrations subscribed to it, unless the lead is on your export blacklist (see Integrations). - The three POST endpoints count against the export rate limit (5 per minute per API key; see Rate Limits).
API Documentation Sections
Introduction | Programmatic Purchase | Authentication | Rate Limits | User Profile | Enrichments | Leads | Filter Presets | Keyword Lists | Email Schedules | Export Formats | Export History | Lead Export History | Account Settings | AI Features | Export Blacklist | Error Handling | Credits & Subscription | MCP Server | Integrations
Ready to Find Your Next Customers? Get access to growing local business leads updated every 5 minutes. See plans starting at $49/mo →