GeoSERP: UULE Bookmarklet to Check Your Rankings by Location
Generate localized Google search URLs for any city, web search or local pack, then click a bookmarklet to scan the SERP for your domain in real time. Organic position, map pack rank, AI Overview. No API, no signup, no monthly fee.
Free forever. No API keys. No row limits.
Local rank checking is broken at the free tier.
Google personalizes results based on your location, search history, and a dozen other signals. When you search from your office, you have no idea if your client in New York or Boston ranks #1 or #50 in either web search or the map pack. The "free" workarounds all hit a wall:
SaaS rank trackers
Ahrefs, Semrush, AccuRanker, they do this beautifully. They also cost $99–$449/mo. Overkill for a quick spot-check on one client's local pack.
Scraping Google directly
CORS blocks browser-side scraping. Server-side scraping gets CAPTCHA'd within five requests unless you pay for rotating residential proxies.
"Just ask the client to check"
Their personalized search history poisons the SERP. They see what Google thinks they want, not the real ranking. You learn nothing.
How to use GeoSERP?
Enter your domain, the keywords you want to track, and the cities you want to check from. Format locations as City, State, Country. Toggle between web search rankings and map pack rankings.
- Set domain first and install the bookmarklet (once). Show your bookmarks bar (Ctrl/Cmd + Shift + B). Drag the green button to it. Done. Save one per client if you're tracking multiple domains.
- Enter your inputs. Add your domain (root only, e.g. yourdomain.com), your keywords (one per line), and the cities you want to check (format: City, State, Country). Choose Web Search or Map Pack. Hit Generate URLs.
- Open a URL in incognito. Copy any generated URL and open it in a new incognito window. Incognito strips your search history so you see the real SERP, not your personalized one.
- Click the bookmarklet. Once the Google results load, click the bookmarklet in your bookmarks bar. It'll scan the page and show your ranking: organic position, map pack rank, or AI Overview mention, depending on what's on the page.
- Repeat or export. Work through your URLs one by one, or export the full list as CSV to batch them. The bookmarklet works on both web search and local pack pages.
Tracking multiple clients? Save one bookmarklet per domain. They'll show up in your bookmarks bar like a folder of one-click rank checks.
Install the Inspector bookmarklet
The Inspector runs on the Google page itself, your browser, your IP. No CORS, no API, no rate limits. One bookmarklet works on both web search results AND the local pack — it auto-detects which page you're on.
- Show your bookmarks bar (Ctrl/Cmd + Shift + B)
- Drag the green button below to your bookmarks bar
- Open any generated URL in an incognito window
- Click the bookmarklet on the SERP — works on both Web and Maps results
Tracking multiple clients? Save one bookmarklet per domain. They'll show up in your bookmarks bar like a folder of one-click rank checks.
Drag the button, don't click
Two pieces of code that respect Google's rules.
1. The uule parameter (web search)
Google has an undocumented URL parameter called uule that encodes a geographic location. It's a base64 string with a fixed prefix (w+CAIQICI) followed by the byte length of the location and the location itself. Most rank trackers use this exact trick under the hood.
// uule = "w+CAIQICI" + base64_char[length] + base64(location)
function generateUule(location) {
const prefix = "w+CAIQICI";
const b64chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
const bytes = new TextEncoder().encode(location);
const lenChar = b64chars[bytes.length];
const locB64 = btoa(String.fromCharCode(...bytes)).replace(/=+$/, "");
return prefix + lenChar + locB64;
}
2. The tbm=lcl parameter (map pack)
For local results, Google has another parameter: tbm=lcl (TBM = "to be matched"). It triggers the Local Finder view, the expanded list of businesses you'd see if you clicked the "Maps" tab on a normal SERP. It accepts the same uule location parameter, returns up to 20 ranked businesses, and shows website links and phone numbers for each. This is what most "map pack" rank trackers actually scrape.
3. The Inspector bookmarklet
Browsers won't let you scrape Google from another website (CORS). Server-side scrapers get CAPTCHA'd unless you pay for proxies. The bookmarklet sidesteps both problems: it's just JavaScript that runs on the Google page already loaded in your tab, scans the rendered DOM for your domain, and shows the result. It auto-detects whether you're on a web SERP or local finder, and parses the relevant rankings either way. Total cost: $0.
Prefer Google Sheets?
If you'd rather work in a spreadsheet, drop this Apps Script into Extensions → Apps Script and use =UULE(location, keyword, "maps") for local pack URLs or =UULE(location, keyword) for web:
function UULE(location, keyword, mode) {
const prefix = "w+CAIQICI";
const b64chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
const lenChar = b64chars[location.length];
const locB64 = Utilities.base64Encode(location).replace(/=+$/, "");
const uule = prefix + lenChar + locB64;
const q = keyword.replace(/ /g, "+");
const tbm = mode === "maps" ? "&tbm=lcl" : "";
return `https://www.google.com/search?q=${q}&uule=${uule}${tbm}&gl=us&hl=en`;
}
Honest answers
Google personalizes results based on your search history, location, and account activity. If you check rankings while logged into Chrome, you see your SERP, not the real one. Incognito strips that personalization.
It reads the rendered DOM of whatever Google served you. So if Google served you the real local SERP, the rank is real. The Inspector itself is best-effort — Google's HTML changes constantly, so selectors break occasionally. When they do, the rank shows "—" instead of giving you a wrong number.
Not for normal use. You're hitting Google like a regular human, from your own IP, on your own browser. If you blast 100 URLs in 30 seconds you'll get a CAPTCHA — pace yourself like a human and you're fine.
Yes. Each bookmarklet is domain-specific, so save one per client. They'll sit in your bookmarks bar like a folder of one-click rank checks. Switch domain on this page, drag a new bookmarklet, repeat.
Maps proper uses lat/long coordinates, not city names — far less convenient. The Local Finder (tbm=lcl) is the same data Google uses to populate the map pack on regular searches, accepts the uule location parameter cleanly, and is what real businesses actually compete for. It's the right level of abstraction for SEO work.
Yes. The default URLs use gl=us&hl=en, but the uule parameter accepts any city/region/country worldwide. Pop the URL open and tweak gl and hl for your region if needed.
More free SEO tools, more brutally honest blog posts.
I share what I build, including the things that didn't work. If you're an SEO who'd rather tinker than subscribe, you'll like the rest of the site.
Read the blog