COMPLETE, then download the file. One flow covers Raw Data, stealer logs, Data Brokers listings, saved Telegram and Discord searches, monitor matches and more.
Exports belong to your organization. Every export your organization creates, from the API or the dashboard, appears in list_exports. An export and its file stay until you delete them.
Some sources have a file endpoint of their own, and original leak files have a separate flow. Downloads and exports compares the routes.
Availability and cost
Availability: every plan with a license in force. No plan feature is checked. Cost: no metered allowance. With an API key, every call counts once toward your monthly API Calls allowance: the create, each poll, the download and the delete. Only2xx responses count. See Rate limits.
When your organization’s license is not active, every endpoint on this page returns 403:
403, an allowance 429 or a capacity 409. See Plans and quotas.
How an export runs
create_export checks the catalog entry, the file type and the arguments, then records the export and returns 201. What happens next depends on the entry.
- Built during the create call. Some entries, such as monitor matches and ransomware victims, build the file before
create_exportanswers. The response then already readsCOMPLETEorFAILED. - Built in the background. The other entries usually answer
IN_PROGRESSand build the file afterwards. If the job cannot start, the response already readsFAILED. The service checks running exports every 30 seconds, so the status changes in 30-second steps.
Export a result set
1
Find the catalog entry
list_export_services returns the active catalog entries.idis what you send tocreate_export. It differs between environments, so look it up every time.nameis stable. Match the entry byname. Catalog entries lists the common ones.allowed_typeslists the file formats the entry accepts. Formats differ per entry.args.paramslists the arguments. Each has aname, atypeandrequired. Avalid_valuesstring, when present, lists the accepted values, comma-separated.
2
Create the export
create_export takes three fields:service: the entry’sid.type: one of the entry’sallowed_types.args: an object with the entry’s arguments. Always send it, even as{}.
No argument can be
null. Leave an optional argument out instead.user is null for exports created with an API key.3
Poll until it ends
get_export reads the export by its id in the query string. It returns the same object as create_export.COMPLETE or FAILED. Poll every 30 seconds. Faster polling does not speed up the export, and each poll is an API call.4
Download the file
download_export returns the file of a COMPLETE export. The file is named after the export id, such as 9876.csv, and -OJ saves it under that name.Catalog entries
These entries cover the most common result sets. Match them byname. The catalog can hold more, so read list_export_services for the full list and for each entry’s optional arguments.
What the optional arguments do:
ControlLeak,ControlLeakDistinct,ControlCertificate,ControlCreditCardexport the records the query matches, newest first. Change the order withsortFieldandsortDirection(defaultcreatedAt,desc). Export only some records withqueryIdsandincludeIdStrategy; see Export only some records.ControlCertificatealso takes the seven risk filters of the SSL search as booleans:suspiciousKeywords,shortValidity,wildcardCertificates,highRiskTlds,excludeOwnDomain,onlyOwnDomainandsensitiveSubdomains.excludeOwnDomainandonlyOwnDomaincannot both betrue.ControlCreditCardtakessaleCategory:free(the default),on_saleorall.DataBrokerstakes the listing filterssite_id,data_type,country,state,city,name,seller,currency,min_price,max_price,min_date,max_date(YYYY-MM-DD),scraped_since(ISO 8601) andis_available. The file holds up to 100,000 listings, newest scraped first. CSV and XLSX put each listing on one row and writedetailsas JSON text. A search with no listings gives one row:{"message": "No records found"}.TelegramSearchandDiscordSearchtake thesearch_history_idthat the search returned, sent ashistory_id.AlertMatchexports every row of the match. Sendpage(andpage_size) to export one page only.show_excluded,filtersandorderingwork as on the match results endpoint.RansomWatchVictimtakescompany,domain,targetedCountry,targetedRegion,industryType,startDate,endDate(YYYY-MM-DD) andsort_by(DATE,GROUP,REGION,COUNTRY,COMPANY,INDUSTRYorNONE).targetedCountry,targetedRegion,industryType,startDateandendDateare camelCase here, unliketargeted_country,targeted_region,industry_type,start_dateandend_dateon the search endpoint.company,domainandsort_bykeep their names.DomainSearchtakesdomain,source,start_date,end_dateandordering, with the same meaning as ondomain_search_export.
Export only some records
TheControl... entries export the query’s matches. To export a selection, pass the record id values from your search results in queryIds and set includeIdStrategy:
3 is the id of the ControlLeak entry in this environment. Look yours up in the catalog.
Find past exports
list_exports returns your organization’s exports, newest first.
The response holds
count, next, previous and results, a list of export objects. Move through pages with page. next is null on the last page; do not call the next URL itself.
Delete exports
delete_exports deletes exports and their files. Pass the export id values in ids, comma-separated.
- The message lists the exports that were deleted. An
idthat is not one of your organization’s exports is skipped. - If any listed export is
IN_PROGRESS, nothing is deleted and the call returns400. Wait for it to end, then delete. - A delete cannot be undone.
Errors
A
504 on create_export does not prove the export was not created. The export is recorded before its file is built. Check list_exports before you create it again.
Every error body the API returns is listed in Handle API errors.