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 trackingIds or a filters object (databaseType, dateFrom, dateTo, exportMethod) to refresh every matching entry, at most 5,000 entries per request (a filters object that matches more than 5,000 entries, or none, returns 400). An invalid filters value also returns 400 bad_request: a dateFrom or dateTo that 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 a databaseType or exportMethod that is not a string. When a trackingIds array is sent, the filters are ignored and not checked. Returns {"data": {"results": [...], "refreshed": 2}}. In each result, changed says whether the lead was updated since its snapshot (by its last-updated date), changedFields lists the changed fields (kept until a refresh-and-export clears them), and refreshed is 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 sends lead.updated to 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. trackingIds is required (up to 5,000); formatId is 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 trackingIds or a filters object (at most 5,000 entries, with the same 400 for an invalid filters value, as for refresh), plus an optional formatId (as for re-export). Everything is checked before any entry changes: a 400 or 404 response leaves the entries unchanged (snapshots, leadLastUpdated and lastChangedFields). Like refresh, it sends lead.updated to 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 with refreshed-export-.

List Parameters

ParameterDescription
limitNumber of entries per page (1-200, default 50)
offsetPagination offset (default 0)
databaseTypeFilter by database: 'other' (the Main database). Any value is accepted and resolves to the Main database. Omit to list every export.
dateFromOnly entries whose most recent export is on or after this date (YYYY-MM-DD)
dateToOnly entries whose most recent export is on or before this date (YYYY-MM-DD; the whole day counts)
exportMethodFilter 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

Notes


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

View Full API Documentation


Ready to Find Your Next Customers? Get access to growing local business leads updated every 5 minutes. See plans starting at $49/mo →