Sourcelane

Google Places Scraper

Google Maps

Operated by Sourcelane✓ verified

A scraper for Google Maps/Places that finds businesses and points of interest by free-text query or by geographic coordinates and radius, and returns full structured place records: unique place identifier, name, formatted address, latitude/longitude, place categories and primary category, average rating and rating count, price level, website URL, international and national phone numbers, business operational status, human-readable opening hours, canonical Google Maps link, icon metadata, and optional reviews (up to five per place with author, rating, text, and timestamps). Supports two search modes (free-text with optional location bias, or nearby by coordinates+radius with selectable place types), localized results by language and region, automatic pagination with a resumable cursor for continuing large text-search runs, and deterministic nearby-radius queries.

Verified Sep 28, 12:10 AM

$0.01

per place

Up to 100 per call. Only pay for results returned; failed calls are refunded.

What people use it for

Trust & reliability

7d uptime trend
WindowUptimeSuccess ratep50p95Calls
24h————0
7d————0
30d————0

Calling contract

Call it through Sourcelane's gateway or MCP server. We run the connector, apply your agent's spend guardrails, and bill only the results returned.

Call it via Sourcelane

curl -X POST https://cool-puffin-608.convex.site/v1/call \
  -H "Authorization: Bearer sl_live_your_agent_key" \
  -H "Content-Type: application/json" \
  -d '{"listing":"google-places-scraper","params":{"textQuery":"coffee shops in Brooklyn","maxItems":5},"maxResults":10}'

Request params

FieldTypeRequiredDescription
searchModestringoptionalText searches accept a free-text query like 'coffee shops in Brooklyn'. Nearby searches require a latitude/longitude center and a radius in meters.
textQuerystringoptionalFree-text query, e.g. 'best ramen in Brooklyn' or 'dentist near Times Square'. Used when search mode is Text.
latitudenumberoptionalCenter latitude (-90 to 90). Used in Nearby mode; optional as a bias in Text mode.
longitudenumberoptionalCenter longitude (-180 to 180). Used in Nearby mode; optional as a bias in Text mode.
radiusintegeroptionalSearch radius around the center in meters. Used in Nearby mode (max 50000).
includedTypesarrayoptionalRestrict nearby results to these place types (e.g. restaurant, cafe, gym). See Google's place-type table. Leave empty for any type.
languageCodestringoptionalBCP-47 language code for localized results (e.g. en, es, fr).
regionCodestringoptionalTwo-letter region/country code to bias results (e.g. us, gb, de).
maxItemsintegeroptionalMaximum number of places. Text search auto-paginates in batches of 20 (up to 60 total). Nearby returns at most 20. Capped at 100 per call.
includeReviewsbooleanoptionalInclude up to 5 reviews per place (author, rating, text, publish time).
pageIdstringoptionalPaste NEXT_PAGE_ID from the previous run's Key-value store to resume Text-search pagination.

Each result contains

FieldTypeDescription
placeIdstringPlace Id
displayNamestringDisplay Name
formattedAddressstringFormatted Address
latitudenumberLatitude
longitudenumberLongitude
typesarrayTypes
primaryTypestringPrimary Type
ratingnumberRating
userRatingCountintegerUser Rating Count
priceLevelstringPrice Level
websiteUristringWebsite Uri
internationalPhoneNumberstringInternational Phone Number
nationalPhoneNumberstring—
businessStatusstring—
weekdayDescriptionsarray—
googleMapsUristring—
iconMaskBaseUristring—
iconBackgroundColorstring—
reviewsarray—

Use Google Places Scraper from Claude, ChatGPT or Cursor

Pick your tool and connect in under a minute. Then just ask — for example: “List 40 dentists in Austin TX with phone, website and rating above 4.5.”

Connect Claude

Web, desktop and mobile. Paste one URL.

  1. 1Copy your personal connector URL
  2. 2In Claude open Settings → Connectors → Add custom connector
  3. 3Paste the URL and click Add — done
Manual setup (config files, REST, Python) +

Claude Code

Adds the Sourcelane MCP server with your key as a header.

terminal
claude mcp add --transport http sourcelane https://cool-puffin-608.convex.site/mcp \
  --header "Authorization: Bearer sl_live_your_agent_key"

Claude Desktop (config file)

Alternative to the connector URL: add to claude_desktop_config.json, then restart Claude.

claude_desktop_config.json
{
  "mcpServers": {
    "sourcelane": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://cool-puffin-608.convex.site/mcp",
        "--header",
        "Authorization:${AUTH_HEADER}"
      ],
      "env": {
        "AUTH_HEADER": "Bearer sl_live_your_agent_key"
      }
    }
  }
}

Cursor & Windsurf

Add to ~/.cursor/mcp.json (or Windsurf's mcp_config.json).

mcp.json
{
  "mcpServers": {
    "sourcelane": {
      "url": "https://cool-puffin-608.convex.site/mcp",
      "headers": {
        "Authorization": "Bearer sl_live_your_agent_key"
      }
    }
  }
}

VS Code

Save as .vscode/mcp.json. VS Code prompts for your key once.

.vscode/mcp.json
{
  "servers": {
    "sourcelane": {
      "type": "http",
      "url": "https://cool-puffin-608.convex.site/mcp",
      "headers": {
        "Authorization": "Bearer ${input:sourcelane-key}"
      }
    }
  },
  "inputs": [
    {
      "type": "promptString",
      "id": "sourcelane-key",
      "description": "Sourcelane agent key",
      "password": true
    }
  ]
}

ChatGPT Custom GPT (Actions)

Create a GPT → Actions → Import from URL, then Authentication: API Key, Bearer.

OpenAPI schema URL
https://sourcelane-amber.vercel.app/openapi.json

REST

One POST. Pass maxResults to cap cost.

curl
curl -X POST https://cool-puffin-608.convex.site/v1/call \
  -H "Authorization: Bearer sl_live_your_agent_key" \
  -H "Content-Type: application/json" \
  -d '{"listing":"google-places-scraper","params":{"textQuery":"coffee shops in Brooklyn","maxItems":5},"maxResults":10}'

Python, LangChain, CrewAI, OpenAI Agents SDK…

Wrap the REST call as a tool, or point an MCP client at the endpoint.

python
import requests

res = requests.post(
    "https://cool-puffin-608.convex.site/v1/call",
    headers={"Authorization": "Bearer sl_live_your_agent_key"},
    json={
        "listing": "google-places-scraper",
        "params": {"textQuery":"coffee shops in Brooklyn","maxItems":5},
        "maxResults": 10,
    },
    timeout=300,
)
body = res.json()
print(body["receipt"]["chargedMicros"], "micro-USD for", body["receipt"]["results"], "results")
print(body["data"])

Reviews

—

0 reviews

5
0
4
0
3
0
2
0
1
0

Leave a review

Loading reviews…