Pick a kind of business and a city. Get the list.
We find the places Google Maps shows there, with their phone, website, address, rating and hours. You get them in your AI agent, your code or a spreadsheet.
1,000 free credits every month. No card needed.
- Title
- Business leads for AI agents.
- Search
- bike shop, up to 10 places
- Area
- Curitiba, PR
- Note
- An example. The places are made up.
| Number | Cost | Place | Total |
|---|---|---|---|
| 1 | 0 | Pedal Novo MundoSaved 23 days ago | 0 |
| 2 | 0 | Bicicletaria XaximSaved 23 days ago | 0 |
| 3 | 0 | Boqueirão BikesSaved 23 days ago | 0 |
| 4 | 0 | Oficina CiclistaSaved 23 days ago | 0 |
| 5 | 1 | Roda Livre BikesFound just now | 1 |
| 6 | 1 | Ciclo SulFound just now | 2 |
| 7 | 1 | Aro 29 BikesFound just now | 3 |
| 8 | 1 | Trilha BikesFound just now | 4 |
| 9 | 1 | Selim BicicletariaFound just now | 5 |
| 10 | 1 | Pedal & CaféFound just now | 6 |
| 10 places for 6 credits. The search stopped at its limit, so the rest of the city stays blank. | |||
Place 5, in full
Roda Livre Bikes
Found just now
- Category
- Bicycle shop
- Phone
- +55 41 0000-0000
- Website
- rodalivre.example
- Address
- Rua Exemplo, 500 - Guaíra, Curitiba - PR
- Coordinates
- -25.4628, -49.2777
- Rating
- 4.8 from 126 reviews
- Hours
- Mon–Fri 9 am–6 pm, Sat 9 am–1 pm
- Google Maps
- A link to the place
- Title
- Business leads for AI agents.
- Search
- bike shop, up to 10 places
- Area
- Curitiba, PR
- Note
- An example. The places are made up.
| Number | Cost | Place | Total |
|---|
You get the saved places at once, for free.
An earlier search for bike shops here stopped early and saved part of the city. Its 4 places come back at once and cost nothing.
| Number | Cost | Place | Total |
|---|---|---|---|
| 1 | 0 | Pedal Novo MundoSaved 23 days ago | 0 |
| 2 | 0 | Bicicletaria XaximSaved 23 days ago | 0 |
| 3 | 0 | Boqueirão BikesSaved 23 days ago | 0 |
| 4 | 0 | Oficina CiclistaSaved 23 days ago | 0 |
We collect the rest, at 1 credit per new place, and stop at your limit.
We search the next squares one after another. You asked for 10, so after 6 new places the list is full. We stop there, at 6 credits, and don't search the rest of the city.
| Number | Cost | Place | Total |
|---|---|---|---|
| 5 | 1 | Roda Livre BikesFound just now | 1 |
| 6 | 1 | Ciclo SulFound just now | 2 |
| 7 | 1 | Aro 29 BikesFound just now | 3 |
| 8 | 1 | Trilha BikesFound just now | 4 |
| 9 | 1 | Selim BicicletariaFound just now | 5 |
| 10 | 1 | Pedal & CaféFound just now | 6 |
| 10 places for 6 credits. The search stopped at its limit, so the rest of the city stays blank. | |||
Each place comes with what Google Maps shows about it.
Phone, website, address, coordinates, rating, opening hours and a link to it on Google Maps. In this example, all of it is made up.
Place 5, in full
Roda Livre Bikes
Found just now
- Category
- Bicycle shop
- Phone
- +55 41 0000-0000
- Website
- rodalivre.example
- Address
- Rua Exemplo, 500 - Guaíra, Curitiba - PR
- Coordinates
- -25.4628, -49.2777
- Rating
- 4.8 from 126 reviews
- Hours
- Mon–Fri 9 am–6 pm, Sat 9 am–1 pm
- Google Maps
- A link to the place
Ask your AI agent in plain words. The places come back as data.
Add gmaps.dev to any agent that speaks MCP, the standard way AI agents use tools. It searches, then reads the new places when they're ready.
You
Find 10 bike shops in Curitiba.
Tool call
search_places
{"keywords":["bike shop"],"geo":{"location":"Curitiba, PR"},"lang":"en","limit":10}
Result
- 0Pedal Novo MundoNovo Mundo
- 0Bicicletaria XaximXaxim
- 0Boqueirão BikesBoqueirão
- 0Oficina CiclistaPortão
Plus a collection finding up to 6 more.
A few minutes later
Tool call
list_collection_places
{"id":"5b0e2c6a-9d1f-4e4b-a7c3-2f8d61b04e19"}
Result
- 1Roda Livre BikesGuaíra
- 1Ciclo SulGuaíra
- 1Aro 29 BikesHauer
- 1Trilha BikesMossunguê
- 1Selim BicicletariaBigorrilho
- 1Pedal & CaféBigorrilho
gm_your_key with your key.{
"mcpServers": {
"gmaps.dev": {
"type": "http",
"url": "https://api.gmaps.dev/mcp",
"headers": { "Authorization": "Bearer gm_your_key" }
}
}
}Your code gets JSON now, and the new places as we find them.
One call with the TypeScript SDK or plain HTTP. The saved places are in the answer. The new ones arrive one by one on the collection's stream, and on a paid plan a webhook tells your server when it's done.
npm i gmaps-sdk. It has no dependencies.import { createClient } from "gmaps-sdk";
const gmaps = createClient({ apiKey: process.env.GMAPS_API_KEY });
const result = await gmaps.places.search({
keywords: ["bike shop"],
geo: { location: "Curitiba, PR" },
lang: "en",
limit: 10,
});
// The new places, one by one, as the collection finds them.
if (result.collection) {
for await (const frame of gmaps.watchCollection(result.collection.id)) {
if (frame.type === "place") console.log(frame.data);
}
}What comes back at once
{
"data": {
"coverage": "partial",
"placesKnown": 4,
"places": [
{
"identity": { "name": "Pedal Novo Mundo" },
"meta": { "cached": true }
},
{
"identity": { "name": "Bicicletaria Xaxim" },
"meta": { "cached": true }
},
{
"identity": { "name": "Boqueirão Bikes" },
"meta": { "cached": true }
},
{
"identity": { "name": "Oficina Ciclista" },
"meta": { "cached": true }
}
],
"collection": {
"id": "5b0e2c6a-9d1f-4e4b-a7c3-2f8d61b04e19",
"status": "queued"
},
"collectionError": null
}
}cached: true, and collection is finding the rest.No code? Search in the console and download a spreadsheet.
Type what you're looking for and the city, and watch the places arrive on a map. Download them as CSV, JSON or Excel, with the same columns every time.
Only need what Google Maps shows you? The extension is free.
It saves the places from your own Google Maps searches into a list in your browser, and downloads them as CSV or JSON. It sends nothing anywhere and needs no account.
Places go into your list as they show up in your Maps search results.
Your list 10 places
Pedal Novo Mundo
Bike shop · Curitiba
Bicicletaria Xaxim
Bike shop · Curitiba
Boqueirão Bikes
Bike shop · Curitiba
Oficina Ciclista
Bike shop · Curitiba
Roda Livre Bikes
Bike shop · Curitiba
Ciclo Sul
Bike shop · Curitiba
Aro 29 Bikes
Bike shop · Curitiba
Trilha Bikes
Bike shop · Curitiba
Selim Bicicletaria
Bike shop · Curitiba
Pedal & Café
Bike shop · Curitiba
Start in three steps
- 1Create a free account. You get 1,000 credits every month, with no card.
- 2Add your key to your agent or your code. Or skip the key and use the console.
- 3Search for a kind of business in a city.
What you pay for
Credits pay for new places and for the emails we find. Everything else is free.
- 0A place we already saved comes back in the same answer, marked
cached: true. - 1A new place that a collection finds for you.
- 1Emails for a new place, on paid plans: 1 credit per place, only when we find at least one.
- 0Searching, quotes, exports and checking your usage.
- 0A collection that finds nothing.
A search never costs more than its limit, which is 20 places unless you set it. A collection stops at the maxPlaces you give it.
Questions
- Is this Google's API?
- No. gmaps.dev is not affiliated with Google or Alphabet. We collect places that businesses list publicly on Google Maps and serve them through our own API.
- What's in a place?
- Its name, category, phone numbers, website, address, coordinates, rating and number of reviews, opening hours, and a link to it on Google Maps. Email addresses come on paid plans. We never return review text, reviewers' names or photos.
- How long does a collection take?
- A few minutes for a small area, longer for a whole city. You can watch places arrive one by one, get a webhook when it ends, or run the same search later.
- Can I contact the businesses I find?
- That depends on the law where you and they are. A place in our results is not permission to contact anyone. Read the acceptable use policy before you do.
- Which countries work?
- Anywhere Google Maps lists businesses, if you search by coordinates or by a box on the map. Typing a city name works for Brazilian cities for now, like "Curitiba, PR".
- What happens when I run out of credits?
- Searches keep answering with the places we already saved, for free. Collecting new places stops until your credits renew next month or you buy a pack.
Start with 1,000 free credits
That's 1,000 new places a month, and every saved place on top of that is free. You don't need a card.