Docs / Google Places API setup for Suppli Leads

Google Places API setup for Suppli Leads

Suppli Leads works out of the box — scraping runs on your Suppli plan's included Suppli API credit, the same pooled-credit system Suppli Ads, DM, and Mail alrea

Illustration coming soon

Google Places API setup for Suppli Leads

Suppli Leads works out of the box — scraping runs on your Suppli plan's included Suppli API credit, the same pooled-credit system Suppli Ads, DM, and Mail already use. You don't need to do anything on this page to start using Suppli Leads.

If you'd rather use your own Google Cloud billing instead of Suppli credit — for example, to avoid drawing down your Suppli API balance, or because you're already running other Google Maps Platform services on your own account — you can add your own Places API key below. It's entirely optional.

Note

This is the same pattern Suppli Fulfillment uses for EasyPost: an OPTIONAL bring-your-own-key path, billed entirely to your own account when you use it, sitting alongside Suppli's own pooled credit as the default.

How access works

Every Suppli Leads scrape checks, in order:

  1. Suppli API credit — if your account has balance, the scrape runs on Suppli's own pooled Google Places key and deducts the real cost from your credit. This is the default path — most users never need to touch this page.
  2. Your own key — if you've added one below and Suppli credit is exhausted, the scrape falls back to your own key instead, at no cost to your Suppli credit.
  3. Blocked — no Suppli credit and no key of your own — you'll see a prompt to top up or add a key.

Setting up your own key (optional)

  1. Go to Google Cloud Console. Open console.cloud.google.com and sign in. Use an existing project or create a new one — the project you pick here is the one that gets billed for every Places API call made with your key.

  2. Enable Places API (New). In the left sidebar, go to APIs & Services → Library, search for "Places API (New)", and click Enable.

    Not the classic \"Places API\"

    Google Cloud lists two separate products: Places API (the older, classic version) and Places API (New). Suppli Leads calls Places API (New) specifically — enabling only the classic Places API will NOT work, since it's a different API with different endpoints. Make sure you enable the one literally named Places API (New).

  3. Create credentials → API Key. Go to APIs & Services → Credentials, click + Create Credentials, and choose API Key. Google generates a key immediately — copy it somewhere safe.

  4. Restrict the key to Places API (New) only. Click Edit API key on the key you just created. Under API restrictions, select Restrict key, then check only Places API (New) from the list. Save.

    Why this matters

    An unrestricted key can be used against ANY enabled Google API on your project — Maps, Geocoding, Directions, all of it — using the same credential. If the key ever leaks, restricting it to Places API (New) only limits the damage to exactly one API.

  5. Confirm billing is linked to the same project. Go to Billing in the Cloud Console and confirm the project you enabled Places API (New) on (step 2) has an active billing account attached. This is the single most common setup mistake — a key from a project with NO billing account looks and behaves identically to a bad key: every request fails.

  6. Paste the key into Suppli. Go to Settings → API Keys in Suppli and paste it into the Google Places API Key field. Save. Leave it blank at any time to go back to using your Suppli plan's included credit.

What to avoid (if you do add your own key)

  • Don't leave the key unrestricted. Always restrict it to Places API (New) only (step 4) — an unrestricted key that leaks can be used to run up charges on any other Google API enabled on your project.
  • Don't reuse a key from a different Google Cloud project than the one with billing enabled. A key is tied to the project it was created under. If you enable billing on Project A but paste in a key generated under Project B, every request fails with the exact same "not authorized" error as a bad key.
  • Don't share or commit the key anywhere public — a GitHub repo, a public spreadsheet, a support ticket, a screenshot. Treat it like a password. If it ever leaks, delete it in Cloud Console and generate a new one immediately.

Costs

Places API (New) is pay-per-request. When you use your own key, Google bills your own project directly — Suppli never sees or marks up this cost. When you use Suppli's included credit instead, Suppli deducts the exact same real per-request cost from your balance — never a flat estimate.

Suppli Leads makes one Text Search call per ~20 businesses found, requesting the business name, address, category, and website in that single call (no separate lookup needed). Because the website field is an Enterprise-tier field, the whole call is billed at the Enterprise rate:

  • Text Search (Enterprise tier, includes website): first 5,000 requests/month free on your own project, then $35 per 1,000 requests (drops at higher volume tiers).

A 50-business campaign is about 3 Text Search calls — well within the free monthly cap for most users running the occasional campaign on their own key, and a fraction of a cent when it draws from Suppli credit instead.

If you set up your own key, new Google Cloud accounts also come with a $300 free trial credit, good for 90 days — more than enough to test Suppli Leads' scraping on your own billing without spending anything real. Check the Google Cloud free trial terms for current eligibility.

Troubleshooting

Places API (New) returns errors as a real HTTP error status with a {"error": {"code", "message", "status"}} body — Suppli surfaces Google's own message directly in the campaign's error rather than a generic failure.

Suppli error message contains Likely cause Fix
PERMISSION_DENIED ... mentions the API isn't enabled Places API (New) isn't enabled on the project your key belongs to Re-check step 2 — confirm you enabled Places API (New), not the classic Places API, on the correct project
PERMISSION_DENIED ... mentions billing Billing isn't enabled on the project Re-check step 5 — a project with no billing account rejects every request, even with a valid, correctly-restricted key
PERMISSION_DENIED with no clear reason, or mentions API restrictions The key is restricted to a different API than Places API (New) Re-check step 4 — edit the key's API restrictions and confirm Places API (New) is checked
INVALID_ARGUMENT Malformed request — rare, usually a transient Suppli-side issue, not something in your key setup Try the scrape again; contact support if it persists
RESOURCE_EXHAUSTED You've hit your own project's request quota or budget cap Check your quota under APIs & Services → Places API (New) → Quotas in Cloud Console, or raise your budget

All three PERMISSION_DENIED causes (API not enabled, billing not enabled, wrong key restriction) look identical from the outside — Google's own message text is the only way to tell them apart, which is exactly what Suppli's error message passes through. If you're using Suppli's included credit instead of your own key, none of this applies to you.

Also useful