Collections · POST /v1/exports
Exports
Turn a collection's places into one csv, json or xlsx file, with a download link that works without a key.
Make an export
Send the collection's id and a format: csv, json or xlsx. Leave the format out to get csv. Making an export is free, and the collection can still be running: the file has the places it held at that moment.
curl -X POST https://api.gmaps.dev/v1/exports \
-H "Authorization: Bearer $GMAPS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"collectionId": "8c1f5e2a-7b3d-4f60-9e14-2a6d0b9c7f31",
"format": "csv"
}'The answer comes with status 201:
{
"data": {
"id": "e41d7c90-3a5b-4f28-8c61-0b9e2d4a7f15",
"collectionId": "8c1f5e2a-7b3d-4f60-9e14-2a6d0b9c7f31",
"format": "csv",
"locale": "en",
"rows": 140,
"url": "https://api.gmaps.dev/v1/exports/e41d7c90-3a5b-4f28-8c61-0b9e2d4a7f15/download?token=q3Xr0bVh6YkL2mN8pT4sW1zA9cE5dF7g",
"createdAt": "2026-09-24T15:30:00.000Z",
"expiresAt": "2026-09-25T15:30:00.000Z"
}
}url: opens the file, with no key, untilexpiresAt. Anyone who has the link can open it, so treat it like a password.expiresAt: 24 hours after you made the export.rows: how many places the collection held when you made it. The file can have fewer if a business asked us to leave it out since then.
Download the file
Open the link in a browser, a spreadsheet or your code, as many times as you like until it expires. That's free too:
curl -o places.csv "https://api.gmaps.dev/v1/exports/e41d7c90-3a5b-4f28-8c61-0b9e2d4a7f15/download?token=q3Xr0bVh6YkL2mN8pT4sW1zA9cE5dF7g"We build the file each time the link is opened, from the places the collection held when you made the export. A place whose business asked to be left out since then isn't in it.
To see the export again, with its link, call GET /v1/exports/{id}. Once the link expires, or the collection's places are deleted, both answer 404 EXPORT_NOT_FOUND: make a new export from the collection.
Formats
- csv: one row per place, with no size limit. It's UTF-8 with the mark Excel needs to show accents right. A list, like several phone numbers, goes in one cell, separated by commas. A cell that starts like a formula gets a
'in front, so a spreadsheet shows it as text instead of running it. - json: an array with one object per place. The keys are the ones in the table below, the same in every language. Lists stay lists, and a missing value is
null. - xlsx: one sheet, one row per place, up to 50,000 places. A bigger collection is refused with
400 VALIDATION_ERROR: export it as csv instead.
locale sets the language of the column names in csv and xlsx: en or pt-BR. Leave it out to use your account's language. It doesn't translate the places: each one keeps the language of the search that last collected it.
Columns
Every format has the same columns, in this order. The free Chrome extension writes them too, so code that reads one file reads the other:
| json key | Header in English | Header in Portuguese |
|---|---|---|
name | Name | Nome |
phones | Phones | Telefones |
emails | Emails | E-mails |
status | Status | Status |
city | City | Cidade |
state | State | Estado |
sector | Sector | Setor |
website | Website | Site |
address | Address | Endereço |
rating | Google rating | Nota no Google |
reviewCount | Google reviews | Avaliações no Google |
cid | Google CID | CID do Google |
placeId | Google place ID | ID do lugar no Google |
mapsUrl | Google Maps URL | URL do Google Maps |
latitude | Latitude | Latitude |
longitude | Longitude | Longitude |
plusCode | Plus code | Plus code |
scrapedAt | Collected at | Data da coleta |
emailsis empty unless your account could read emails when you made the export. It's also empty for a place we have no address for. See Emails.- In xlsx,
cidis stored as text. If you open the csv in a spreadsheet, import that column as text, or its last digits get rounded off. sectoris the place'sidentity.category, such as Bakery.scrapedAtis when we last collected the place.
When an export is refused
| Answer | What happened, and what to do |
|---|---|
409 CONFLICT | The collection hasn't found any places yet. Wait for the first ones, then try again. |
409 CONFLICT | The collection ended with no places, so there's nothing to export. Try a bigger area or other terms. |
409 CONFLICT | The collection's places were deleted, 30 days after it started. Its counts are still there. Start the same collection again and export the new one. |
400 VALIDATION_ERROR | The collection has more than 50,000 places, the most an xlsx file holds. Export it as csv. |
404 COLLECTION_NOT_FOUND | The id is wrong or belongs to another account. |