<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Jim Miller</title>
    <description>The latest articles on DEV Community by Jim Miller (@jimmiller26).</description>
    <link>https://dev.to/jimmiller26</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4200639%2F6134cfd7-84fb-4011-bb86-465b4e38bc2c.png</url>
      <title>DEV Community: Jim Miller</title>
      <link>https://dev.to/jimmiller26</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jimmiller26"/>
    <language>en</language>
    <item>
      <title>How to Scrape Google Maps Leads from Claude Desktop or Cursor with an MCP Server</title>
      <dc:creator>Jim Miller</dc:creator>
      <pubDate>Thu, 22 Oct 2026 13:51:23 +0000</pubDate>
      <link>https://dev.to/jimmiller26/how-to-scrape-google-maps-leads-from-claude-desktop-or-cursor-with-an-mcp-server-4e9d</link>
      <guid>https://dev.to/jimmiller26/how-to-scrape-google-maps-leads-from-claude-desktop-or-cursor-with-an-mcp-server-4e9d</guid>
      <description>&lt;p&gt;I wanted a quick list of roofers in one area without leaving Cursor. Names, phone numbers, websites, and review counts would do. I didn't need a long report. I needed a table I could check.&lt;/p&gt;

&lt;p&gt;That's the workflow I'll walk through here: connect GMapsScraper.AI, fetch one search page, and use those rows to decide what to look at next. The &lt;a href="https://gmapsscraper.ai/google-maps-scraper-mcp" rel="noopener noreferrer"&gt;GMapsScraper.AI MCP connection guide&lt;/a&gt; covers the remote server for business searches, reviews, and photos.&lt;/p&gt;

&lt;p&gt;The useful part is being specific. “Find me leads” leaves the area and amount of work open. “Find roofers here, fetch page 1, then stop” gives you a clear first step.&lt;/p&gt;

&lt;h2&gt;
  
  
  Get your API key
&lt;/h2&gt;

&lt;p&gt;Start by &lt;a href="https://gmapsscraper.ai" rel="noopener noreferrer"&gt;signing up for GMapsScraper.AI&lt;/a&gt;. Open &lt;strong&gt;Settings &amp;gt; Create API Key&lt;/strong&gt; in the dashboard. You'll use the same key for MCP and the REST API.&lt;/p&gt;

&lt;p&gt;The endpoint is &lt;code&gt;https://gmapsscraper.ai/api/mcp&lt;/code&gt;. Choose &lt;strong&gt;Streamable HTTP&lt;/strong&gt; as the transport. Authentication uses the header &lt;code&gt;Authorization: Bearer YOUR_API_KEY&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Replace &lt;code&gt;YOUR_API_KEY&lt;/code&gt; in the setup below with your key. Keep configs containing it out of shared repositories and screenshots. Pick the client you use; you don't need to set up all four.&lt;/p&gt;

&lt;h2&gt;
  
  
  Connect Cursor
&lt;/h2&gt;

&lt;p&gt;Add this to &lt;code&gt;.cursor/mcp.json&lt;/code&gt; for one project, or &lt;code&gt;~/.cursor/mcp.json&lt;/code&gt; for all your projects. If the file already has servers, keep them and add this entry:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"mcpServers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"gmapsscraper"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"url"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://gmapsscraper.ai/api/mcp"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"headers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"Authorization"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Bearer YOUR_API_KEY"&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I'd make the first request small. One page gives you something you can read through before you spend more quota. Check the addresses and field names before asking Cursor to build a longer list.&lt;/p&gt;

&lt;h2&gt;
  
  
  Connect Claude Code
&lt;/h2&gt;

&lt;p&gt;Run this command to add the HTTP server:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;claude mcp add &lt;span class="nt"&gt;--transport&lt;/span&gt; http gmapsscraper https://gmapsscraper.ai/api/mcp &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--header&lt;/span&gt; &lt;span class="s2"&gt;"Authorization: Bearer YOUR_API_KEY"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Keep the space between &lt;code&gt;Bearer&lt;/code&gt; and your key. It's a small detail that's easy to lose when copying a header.&lt;/p&gt;

&lt;h2&gt;
  
  
  Connect Claude Desktop with mcp-remote
&lt;/h2&gt;

&lt;p&gt;Claude Desktop's config launches local stdio servers. Use the open-source &lt;code&gt;mcp-remote&lt;/code&gt; bridge to reach this remote server. Add this entry to your Claude Desktop MCP config:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"mcpServers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"gmapsscraper"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"npx"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"args"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"-y"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"mcp-remote"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"https://gmapsscraper.ai/api/mcp"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"--header"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"Authorization:${GMAPS_AUTH}"&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"env"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"GMAPS_AUTH"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Bearer YOUR_API_KEY"&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You'll need &lt;code&gt;npx&lt;/code&gt; available locally. Leave &lt;code&gt;Authorization:${GMAPS_AUTH}&lt;/code&gt; as written. Put your key in &lt;code&gt;env.GMAPS_AUTH&lt;/code&gt; and keep its &lt;code&gt;Bearer&lt;/code&gt; prefix. The bridge runs on your machine and connects to the remote MCP endpoint.&lt;/p&gt;

&lt;h2&gt;
  
  
  Connect Codex
&lt;/h2&gt;

&lt;p&gt;Set the key in the shell you'll use to run Codex, then add the server:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;GMAPS_API_KEY&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'YOUR_API_KEY'&lt;/span&gt;
codex mcp add gmapsscraper &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--url&lt;/span&gt; https://gmapsscraper.ai/api/mcp &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--bearer-token-env-var&lt;/span&gt; GMAPS_API_KEY
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The last argument takes the &lt;strong&gt;name of the environment variable&lt;/strong&gt;. Keep &lt;code&gt;GMAPS_API_KEY&lt;/code&gt; there. Don't replace it with the token or &lt;code&gt;$GMAPS_API_KEY&lt;/code&gt;. That variable needs to stay available when you run Codex.&lt;/p&gt;

&lt;h2&gt;
  
  
  Check the connection
&lt;/h2&gt;

&lt;p&gt;If you want to check the server directly, open MCP Inspector:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx @modelcontextprotocol/inspector
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Choose &lt;strong&gt;Streamable HTTP&lt;/strong&gt;, enter the endpoint, and add an &lt;code&gt;Authorization&lt;/code&gt; header with the value &lt;code&gt;Bearer YOUR_API_KEY&lt;/code&gt;. Connect and run &lt;code&gt;tools/list&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;You should see &lt;code&gt;scrape_google_maps_search&lt;/code&gt;, &lt;code&gt;scrape_google_maps_reviews&lt;/code&gt;, and &lt;code&gt;scrape_google_maps_photos&lt;/code&gt;. Next, try the search arguments below. I like this check because it lets me work through the connection setup before writing a longer prompt.&lt;/p&gt;

&lt;h2&gt;
  
  
  Start with a business search
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;scrape_google_maps_search&lt;/code&gt; accepts these parameters:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Parameter&lt;/th&gt;
&lt;th&gt;What to put in it&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;q&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Required search text.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;page&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Page number; defaults to &lt;code&gt;1&lt;/code&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;ll&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Location as &lt;code&gt;@lat,lng,zoom&lt;/code&gt;; defaults to a US location.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;hl&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Language; defaults to &lt;code&gt;"en"&lt;/code&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;gl&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Country; defaults to &lt;code&gt;"us"&lt;/code&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;extra&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Boolean requesting email and social fields.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Here's a first request:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"q"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"roofing contractor"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"page"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"ll"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"@40.6970194,-74.3093048,11z"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"hl"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"en"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"gl"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"us"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"extra"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Set the location yourself. Change &lt;code&gt;ll&lt;/code&gt;, &lt;code&gt;hl&lt;/code&gt;, and &lt;code&gt;gl&lt;/code&gt; to match your search area, language, and country. Each call fetches one page, so put the page limit in your prompt too.&lt;/p&gt;

&lt;p&gt;The response contains &lt;code&gt;total&lt;/code&gt;, &lt;code&gt;params&lt;/code&gt;, and a &lt;code&gt;data&lt;/code&gt; array. For a first table, I'd use &lt;code&gt;Name&lt;/code&gt;, &lt;code&gt;Fulladdress&lt;/code&gt;, &lt;code&gt;Phone&lt;/code&gt;, &lt;code&gt;Website&lt;/code&gt;, &lt;code&gt;Review Count&lt;/code&gt;, and &lt;code&gt;Average Rating&lt;/code&gt;. Keep &lt;code&gt;Google Maps URL&lt;/code&gt; and &lt;code&gt;Fid&lt;/code&gt; handy for follow-up calls. Code that reads these fields needs their exact spelling and case.&lt;/p&gt;

&lt;p&gt;Use &lt;code&gt;extra: true&lt;/code&gt; to request emails and social links. The free API plan doesn't return those extra fields. Emails are only available when present, so leave missing contacts blank.&lt;/p&gt;

&lt;p&gt;Before sorting the table, read a few rows. Are the addresses in the area you meant? Is the search term right for the businesses you want? Fix the search first if those basics look wrong.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pull reviews or photos for one business
&lt;/h2&gt;

&lt;p&gt;Once you've picked a business, reuse its returned &lt;code&gt;Fid&lt;/code&gt; as &lt;code&gt;fid&lt;/code&gt;, or pass its Google Maps place URL as &lt;code&gt;url&lt;/code&gt;. That keeps the next request tied to the listing you chose.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;scrape_google_maps_reviews&lt;/code&gt; takes &lt;code&gt;fid&lt;/code&gt; or &lt;code&gt;url&lt;/code&gt;, &lt;code&gt;page&lt;/code&gt;, and &lt;code&gt;sort_by&lt;/code&gt;. The sort values are &lt;code&gt;1&lt;/code&gt; for relevant, &lt;code&gt;2&lt;/code&gt; for newest, &lt;code&gt;3&lt;/code&gt; for highest rating, and &lt;code&gt;4&lt;/code&gt; for lowest rating. For recent reviews, use &lt;code&gt;page: 1&lt;/code&gt; and &lt;code&gt;sort_by: 2&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;The response includes &lt;code&gt;reviews&lt;/code&gt;, &lt;code&gt;next&lt;/code&gt;, &lt;code&gt;total&lt;/code&gt;, &lt;code&gt;params&lt;/code&gt;, and &lt;code&gt;place&lt;/code&gt;. The boolean &lt;code&gt;next&lt;/code&gt; tells you whether another page exists. When summarizing reviews, say which page you read so you can see the scope later.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;scrape_google_maps_photos&lt;/code&gt; takes &lt;code&gt;fid&lt;/code&gt; or &lt;code&gt;url&lt;/code&gt;, plus &lt;code&gt;page&lt;/code&gt;. It returns &lt;code&gt;photos&lt;/code&gt;, &lt;code&gt;next&lt;/code&gt;, &lt;code&gt;total&lt;/code&gt;, &lt;code&gt;url&lt;/code&gt;, &lt;code&gt;params&lt;/code&gt;, and &lt;code&gt;place&lt;/code&gt;. I'd inspect the returned photo data before deciding what belongs in an audit. A count alone won't tell you how old the photos are or how well the business is doing.&lt;/p&gt;

&lt;p&gt;The &lt;a href="https://gmapsscraper.ai/google-maps-scraper-api" rel="noopener noreferrer"&gt;GMapsScraper.AI REST API reference&lt;/a&gt; has the underlying request and response fields.&lt;/p&gt;

&lt;h2&gt;
  
  
  Five prompts I'd use
&lt;/h2&gt;

&lt;p&gt;Start with a search, then work from the rows already in the conversation. Replace the location or supply the selected business when needed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Get a small lead table&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Find roofing contractors with ll "@40.6970194,-74.3093048,11z", hl "en", gl "us", and extra false. Fetch page 1 only. Show Name, Phone, Website, Average Rating, and Review Count. Leave blanks as blanks.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;2. Make a review-count shortlist&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;From that page, show businesses with fewer than 30 reviews. Include their Google Maps URLs. No more tool calls.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;3. Check missing websites&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;From that page, show Name, Fulladdress, and Phone where Website is blank. Label them “website not returned.” Don't guess domains. No new calls.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;4. Read recent reviews&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;For the place URL I give you, fetch reviews page 1 with sort_by 2. Summarize repeated service themes without reviewer names. Show next, then stop.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;5. Get photo data for an audit&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Use the Fid of the business I pick. Fetch photos page 1 only. Show total and next, then summarize the returned photo data. Stop there.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;A shortlist is where I start checking businesses. Fewer reviews doesn't tell me whether someone wants help. A blank website field means I should check the listing before pitching a website. Those checks make the list more useful than adding another page of names.&lt;/p&gt;

&lt;h2&gt;
  
  
  Keep an eye on quota
&lt;/h2&gt;

&lt;p&gt;MCP uses the same rate limits, request quota, and response shapes as REST. Each API key is rate limited. API request billing is separate from web app credits.&lt;/p&gt;

&lt;p&gt;The web app's free plan gives you 1,000 credits per month, with one credit per business. It allows up to two keywords per task and one concurrent task. Check the &lt;a href="https://gmapsscraper.ai/pricing" rel="noopener noreferrer"&gt;GMapsScraper.AI plans and pricing&lt;/a&gt; when choosing how to use it.&lt;/p&gt;

&lt;p&gt;My approach is simple: read the search page, pick a business, then decide whether reviews or photos would help. Reusing the table for filters saves calls and makes it easier to follow your work.&lt;/p&gt;

&lt;h2&gt;
  
  
  If something goes wrong
&lt;/h2&gt;

&lt;p&gt;If tools don't appear, try &lt;code&gt;tools/list&lt;/code&gt; in Inspector with the same endpoint and key. Compare the settings with your client config. Check the JSON and header first. For Claude Desktop, check that &lt;code&gt;npx&lt;/code&gt; is available too.&lt;/p&gt;

&lt;p&gt;For an auth error, check the &lt;code&gt;Bearer&lt;/code&gt; prefix. In Codex, check that the named environment variable contains the key. In Claude Desktop, check &lt;code&gt;GMAPS_AUTH&lt;/code&gt;. If you hit a quota or rate limit, check API usage and pause further calls while you sort it out.&lt;/p&gt;

&lt;h2&gt;
  
  
  Keep collection focused
&lt;/h2&gt;

&lt;p&gt;GMapsScraper.AI collects publicly available business data. Respect Google's terms and privacy and anti-spam laws, including GDPR, CCPA, and CAN-SPAM. Collect only what you need, honor opt-outs, and don't target individual reviewers.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Jim Miller, Growth at GMapsScraper.AI&lt;/em&gt;&lt;/p&gt;

</description>
      <category>mcp</category>
      <category>ai</category>
      <category>cursor</category>
      <category>claude</category>
    </item>
  </channel>
</rss>
