API

Export leads

The bulk path — push leads to Close, GoHighLevel, Sheets, or a downloadable file.

POST/api/v1/exports

The bulk path. A single JSON response can’t carry tens of thousands of leads (see Limits), so reading pages at 2,500 and volume goes through an export: a file destination writes the whole set and hands back a download link, and a CRM destination pushes the rows straight in.

Export costs nothing — you already paid for these leads.

destinationRequired. close | ghl | google_sheets | csv | xlsx | json.
search_idExport one search's leads.
allOr set true to export the whole library.
filtersWith all=true: narrow the library using the same filter rows the leads endpoint accepts.
spreadsheet_idgoogle_sheets only: append to an existing LeadMarina-created sheet.
bash
curl -X POST https://leadmarina.com/api/v1/exports \
  -H "Authorization: Bearer lm_live_xxxx" \
  -H "Content-Type: application/json" \
  -d '{ "destination": "csv", "all": true }'
json
{
  "exported": 12480,
  "outcome": "CSV ready to download",
  "download_url": "https://…",
  "file": "leadmarina-all-leads-2026-08-05.csv"
}

Per-call limits differ by destination 50,000 for CSV/XLSX, 25,000 for JSON, 5,000 for Google Sheets, and 1,000 for Close or GoHighLevel. The CRM figure is low because those APIs take one call per lead, so it’s a time limit rather than a size one; for a large push, export CSV and import the file.

If more leads match than the limit allows, the export still runs and the response adds truncated: true with the limit that applied — you will never be handed part of a list and told it was complete.

Leads exported before are updated in place, matched on their Google CID, so re-exporting never duplicates rows and never overwrites notes or columns you added yourself.