Skip to main content
Glama

Local Business Leads: Google Maps Alternative (OpenStreetMap)

local_business_leads
Read-only

List local businesses by category and location from OpenStreetMap, including address, phone, email, website, and hours to build prospect lists for any business type worldwide.

Instructions

List local businesses by category and place (city, county, ZIP, neighborhood or lat/lon radius) from OpenStreetMap under its open license, with address, phone, email, website, opening hours and socials. Unlike npi_provider_lists (official US healthcare registry) or trucking_company_leads (FMCSA carriers), this covers any business type worldwide, with coverage as good as local OSM mapping. Use when you need a prospect list such as plumbers in Phoenix or cafes in a ZIP. Do not use for US healthcare providers (use npi_provider_lists, which is authoritative) or for reviews/ratings (OSM has none). Parameters: give location, or latitude+longitude (radiusKm defaults to 5); radiusKm with a location searches a circle instead of the official boundary. Whole states or countries are slow, often longer than 60 s, so raise run_timeout_secs to 300 or narrow the area. requireEmail sharply reduces results because few OSM entries list email. Returns per item: agentSummary, name, category, street, city, state, postcode, phone, email, website, openingHours, socials, lat, lon, osmUrl, attribution (ODbL; credit OpenStreetMap when you republish).

Behavior: read-only; runs the Apify Actor pandadad0214/local-business-leads (https://apify.com/pandadad0214/local-business-leads) on your own Apify account. Price: $0.001 per business found. Runs that find nothing are not charged per result, and spending is capped per call by run_max_charge_usd (default $0.50). run_max_items (default 50) limits items returned and fills maxResults when you leave it unset, so it also limits what is billed; setting maxResults higher can bill more than is returned. Most calls finish in 5-15 s for a few inputs; large inputs or crawls can take minutes, so raise run_timeout_secs (max 300) or shrink the input after a timeout error. Returns JSON {actor, count, items}; long text output is trimmed to whole items, with all items in structuredContent.

Input Schema

NameRequiredDescriptionDefault
sortByNoSort by. Most complete = businesses with phone, email, website, address and hours first. Name = A to Z. Choices: mostComplete = Most complete contact details first; name = Name (A-Z).mostComplete
latitudeNoLatitude. Optional. Instead of a location name: center latitude, e.g. 33.4255 (used with longitude and radius; radius defaults to 5 km).
locationNoLocation. City, county, state, ZIP or neighborhood, e.g. "Tempe, Arizona", "Austin, TX", "London", "90210". Smaller areas are faster; whole US states or countries may time out (use a radius or a city).
radiusKmNoRadius (km). Optional. Search a circle of this many km around the location's center instead of its official boundary. 1 to 100.
longitudeNoLongitude. Optional. Center longitude, e.g. -111.9400.
categoriesNoBusiness categories. Plain words, one per line: dentist, plumber, restaurant, coffee shop, lawyer, hair salon, gym, real estate, car repair… (about 150 built in). Other words are matched against OpenStreetMap tags and names. Power users can enter a tag like shop=florist or craft=hvac.
maxResultsNoMaximum businesses. You pay per returned business, so this also caps the cost. Whole number, 1 to 10,000; default 200.
requireEmailNoOnly businesses with an email. Keep only businesses that list an email address (fewer results: most businesses publish phone and website, fewer publish email).
requirePhoneNoOnly businesses with a phone number. Keep only businesses that list a phone number.
run_max_itemsNoOptional. Most results to return from this call (default from PANDA_MAX_ITEMS, 50). Also limits how many results the Actor produces and charges for, unless you set its own max field.
requireWebsiteNoOnly businesses with a website. Keep only businesses that list a website on OpenStreetMap.
run_timeout_secsNoOptional. Seconds to wait for results (default from PANDA_TIMEOUT_SECS, 120; max 300).
run_max_charge_usdNoOptional. Hard spending cap for this call in USD (default from PANDA_MAX_CHARGE_USD, 0.50).

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only cover the read-only/open-world safety profile, and the description goes well beyond them: it names the underlying Apify Actor and account, the per-business price, that zero-result runs are not charged, and that run_max_charge_usd hard-caps spend. It also discloses non-obvious behaviors such as maxResults set above run_max_items billing more than is returned, and typical latency of 5-15 s with timeout handling.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with purpose, then alternatives, then parameter tips, then runtime/billing behavior — a sensible order for an agent that may stop reading early. It is dense but the 'Parameters:' block partly re-explains fields already documented in the schema, which is the only real redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 13 parameters, no output schema and no required fields, the description carries the full burden and does so: it enumerates the per-item return fields (agentSummary, osmUrl, attribution, etc.), the envelope shape {actor, count, items}, and the ODbL attribution obligation. An agent has everything needed to call it and interpret the result without further discovery.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds genuine cross-parameter semantics the schema does not: radiusKm turns a boundary search into a circle, latitude+longitude pair with a 5 km default radius, and requireEmail sharply cuts results because few OSM entries list email. The maxResults vs. run_max_items billing interaction is the kind of meaning a schema cannot express, though a few tips merely restate schema text.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List local businesses by category and place') with the data source (OpenStreetMap) and the fields returned. It explicitly names the two closest siblings, npi_provider_lists and trucking_company_leads, and explains how it differs from each (any business type worldwide vs. official healthcare/FMCSA registries).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a concrete when-to-use example ('plumbers in Phoenix or cafes in a ZIP') and explicit when-not-to-use rules with the alternative named in each case: US healthcare goes to npi_provider_lists and reviews/ratings are out of scope entirely. It also flags the practical trap that whole states or countries are slow and tells the agent to narrow the area or raise run_timeout_secs.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.