Local AI Visibility Tracker: ChatGPT, Perplexity & Maps avatar

Local AI Visibility Tracker: ChatGPT, Perplexity & Maps

Pricing

from $100.00 / 1,000 local ai answers

Go to Apify Store
Local AI Visibility Tracker: ChatGPT, Perplexity & Maps

Local AI Visibility Tracker: ChatGPT, Perplexity & Maps

Track ChatGPT, Perplexity, Gemini, Claude and readable Google AI recommendations for your business and city. Get Maps matches, competitors, citations, review gaps, an HTML report and history. $0.10 per analysed answer plus model usage.

Pricing

from $100.00 / 1,000 local ai answers

Rating

0.0

(0)

Developer

Zaiq

Zaiq

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Categories

Share

Local AI Visibility Tracker: ChatGPT, Perplexity, Gemini, Claude & Maps

Does AI recommend your business for your service in your city? Get one row per answer: a plain verdict, recommended businesses in order, Google Maps identities, your position, competitors and cited sources. Open the included HTML report for share of voice, review gaps and changes since the last comparable run.

$0.10 per analysed answer, the same price on every Apify plan. Maps lookups and the report are included. Model usage for the answer and a separate entity-extraction step is billed to your account through Apify’s OpenRouter gateway. Failed, refused and unreadable answers have no answer-event charge.

Smallest useful input: a business name, city and one service. The prefill asks one question on Perplexity. Replace the example business name with yours. Add ChatGPT, Gemini, Claude or readable Google AI search answers when you want a broader comparison.

What you get

FieldWhat it holds
Verdict firstRecommended #2 or Not recommended, with the engine, question, recommended businesses, Maps ratings and review counts, and source names.
RecommendationsEvery extracted recommended business in answer order, its exact supporting quote and a Maps match with confidence and reason.
Maps listingsPlace ID, rating, review count, category, address, website and Maps URL when identity can be established in the requested city. Ambiguous or unmatched names remain visible.
Your businessNamed anywhere, positively recommended, recommendation position, and whether that recommendation was verified to your exact Maps listing.
CompetitorsYour supplied competitor names or the first local Maps results for each service/place query. These do not seed the AI answers.
CitationsSource URLs and domains grouped as review sites, directories, communities, business websites, known local news or unclassified sources.
SUMMARY and REPORT.htmlShare of voice, recommendation rates by engine, question-by-question winners, source frequency, Maps rating/review gaps, prompt plan and coverage notes.
CHANGES and named historyChanges against the previous complete run with the same questions, settings and model versions. Failed or incomplete runs do not replace that baseline.

What people use it for

  • Local SEO reporting: Show which businesses appear for local customer questions and where the target is absent.
  • Multi-location monitoring: Schedule a run for each business location and use named stores to retain comparable results.
  • Competitor research: Compare the businesses AI recommends with Maps ratings and review counts, with explicit identity confidence. Confidence scores are matching heuristics, not calibrated probabilities.
  • Citation research: Identify directories, community discussions and local pages cited in the sampled answers, then inspect them for factual information gaps.

How to use it

  1. Enter the business name and city, or a precise Google Maps place URL. Replace the example business in the prefill.
  2. Enter a service. Start with the Best service intent and one engine; expand only after checking the first report.
  3. Open Local recommendations and REPORT.html. Inspect unresolved matches and free notes alongside the rates.
  4. Copy generated questions from SUMMARY into Prompts to edit them. Add a named history store and schedule sequential runs to track changes.

Input

FieldExampleNotes
Business name and cityExample Dental; Example CityOr supply a precise Google Maps place URL. City evidence is required for a verified listing.
Services["dentist"]Up to 10 service phrases.
Places["Downtown", "West End"]Neighbourhoods within the city; empty uses the city.
Intentsbest, emergency, problem, budget, open-nowChoose relevant intents. The problem intent needs Problems, such as a leaking pipe.
Competitors["Example Dental Two"]Optional. Empty discovers the first local Maps results for the service and place.
Business aliases["Example Dental Clinic"]Exact alternate names, not generic service words.
EnginesOne or more engines from the formChatGPT/OpenAI API, Perplexity, Gemini, Claude, Google AI Overview or Google AI Mode when readable.
Country and languageUS; enApproximate search context and answer language. Not GPS coordinates.
Prompts["best dentist in Example City"]Replaces generated templates. Up to 100. Extra prompts are appended.
Maximum answers1 for a first checkUp to 100 question × engine combinations, in prompt order then engine order.
Named history storeexample-local-visibilityA store name using letters, digits and hyphens. Use sequential schedules.
Model IDsOptionalDefault: newest supported family release from the gateway catalog. Pin IDs for stable comparisons.

Output

Each result is one row in the run's dataset (download it as JSON, CSV, Excel, XML or HTML, or read it through the API). An example row (values shortened):

{
"verdict": "Recommended #1 · Engine 1 · best plumber in Example City · recommended: Example Plumbing 1 (4.7★, 1,720 reviews), Example Plumbing 2 (4.7★, 2,929 reviews), Example Plumbing 3 (4.8★, 2,609 reviews), Example Plumbing 4 (4.5★, 624 reviews), Example Plumbing 5 (4.9★, 1,232 reviews), Example Plumbing 6 (4.8★, 18,078 reviews) · cites Directory A, Community B",
"engine": "engine-1",
"prompt": "best plumber in Example City",
"targetRecommended": true,
"targetRank": 1,
"targetVerifiedRecommended": true,
"recommendations": [
{
"name": "Example Plumbing 1",
"rank": 1,
"mapsMatch": {
"status": "matched",
"confidence": 0.995,
"reason": "Exact name and matching city; street address appears in the answer",
"listing": {
"placeId": "example-place-1",
"rating": 4.7,
"reviewsCount": 1720,
"category": "Plumber",
"address": "1 Example Street, Example City"
}
}
},
{
"name": "Example Plumbing 2",
"rank": 2,
"mapsMatch": {
"status": "matched",
"confidence": 0.995,
"reason": "Exact name and matching city; street address appears in the answer",
"listing": {
"placeId": "example-place-2",
"rating": 4.7,
"reviewsCount": 2929,
"category": "Plumber",
"address": "2 Example Street, Example City"
}
}
}
],
"citedDomains": [
"directory.example",
"community.example"
],
"status": "ok",
"dataMode": "fake-ai-live-maps"
}

This example comes from an executed free test on 26 October 2026 using simulated AI answers and live, signed-out Maps lookups. Business names, engine labels, cities, identifiers, addresses and cited site addresses were replaced; numeric Maps observations and match results are retained. It is not a measurement of actual AI recommendations. SUMMARY records the prompt plan, coverage, models, traffic and charges for each run.

Pricing

  • $0.10 per analysed AI answer, the same price on every Apify plan. One question on four engines can deliver four chargeable answers.
  • Maps identity checks, automatic competitor discovery, SUMMARY, the HTML report and history are included in the answer price.
  • The answering model and Gemini Flash entity-extraction step use Apify’s OpenRouter gateway. Their usage is billed separately to your account at the gateway’s applicable rates. No developer AI key or buyer-supplied AI key is required.
  • Refused, empty, truncated, invalidly extracted or unavailable answers have no answer-event charge. An informative answer with no recommendation, or an answer citing no sources, can still be a successful analysed answer.
  • Model usage may still be billed when a model call completes but the answer cannot be analysed. Unresolved individual Maps names are shown honestly alongside the delivered analysis.
  • Apify’s $0.00005 Actor start charge counts towards Maximum cost per run.

What typical jobs cost at the list price:

JobCost
One question, one successful engine$0.10 + $0.00005 start + model usage
Five questions, four successful engines$2.00 + $0.00005 start + model usage
One hundred analysed answers$10.00 + $0.00005 start + model usage
No readable or analysable answers$0 in answer events; the start charge and any completed model usage can still apply

Maximum cost per run limits this Actor’s answer events and start charge. The next answer is checked before work begins. Separately billed gateway model usage is not included in that answer-event budget. Free notes explain work skipped at the limit. A restarted run skips already delivered result IDs without another answer event or model call for those rows.

Tips

  • Use the same questions, language, country and model IDs each week. The report refuses to calculate visibility deltas when those change.
  • Use explicit prompts in your desired language. Generated intent templates are English; the answering model is asked to respond in the selected language.
  • Read source pages before taking action. Frequency of citation is an observation, not evidence that a directory caused a recommendation or that your business is missing from it.
  • Use a precise Maps URL for businesses with common names or several local branches. Address evidence in the answer can distinguish branches.
  • Run each business separately. One report covers one target business and its city, with optional neighbourhoods.

Use it through the API

Python

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("zaiq/local-ai-visibility").call(run_input={"businessName": "Example Dental", "city": "Example City", "services": ["dentist"], "maxAnswers": 1})
for row in client.dataset(run["defaultDatasetId"]).iterate_items():
print(row)

JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });
const run = await client.actor('zaiq/local-ai-visibility').call({"businessName": "Example Dental", "city": "Example City", "services": ["dentist"], "maxAnswers": 1});
const { items } = await client.dataset(run.defaultDatasetId).listItems();

HTTP (one call, results back)

curl -X POST 'https://api.apify.com/v2/acts/zaiq~local-ai-visibility/run-sync-get-dataset-items?token=<YOUR_APIFY_TOKEN>' \
-H 'Content-Type: application/json' \
-d '{"businessName": "Example Dental", "city": "Example City", "services": ["dentist"], "maxAnswers": 1}'

Integrations and schedules

  • Schedules: run it every hour, day or week from the Apify Console (Schedules) and keep a history of results.
  • Make, Zapier, n8n, Google Sheets, Slack, Airtable: connect it through Apify's integrations, or send each finished run to a webhook.
  • Datasets: results stay in the run's dataset; export them or read them by API whenever you need them.

Use it with AI agents (MCP)

Add Apify's MCP server (https://mcp.apify.com) to Claude, ChatGPT, Cursor, VS Code or any MCP client. The agent can find this Actor and run it for you: ask it for "check which local businesses AI recommends for this service in this city, compare my business with those results, and show the cited sources". AI agents can also pay for runs directly through Apify's agentic payments.

Limits

  • This samples web-enabled API models, not signed-in consumer chat sessions. Consumer products can use different models, search behaviour, personalisation and locations.
  • Google AI Overview requires an answer included in the SERP page. Google AI Mode often loads its answer asynchronously through a route the SERP proxy does not support; those attempts return free notes. No browser challenge is solved and no alternative paid data supplier is used.
  • Maps reads public, signed-out results. Blocked, empty or incomplete calls try the next available cloud route: direct, datacenter, then fresh residential sessions. The final unreadable result is reported. No account is used.
  • Up to 100 answer attempts, 25 extracted businesses per answer, three extra name searches per answer and 150 Maps requests per run. Each answer has a 180-second deadline. Candidate results are cached within the run. Unresolved names are retained with their reasons.
  • Entity extraction uses AI, with quotes checked against the original answer and order derived from the text. Read the evidence for ambiguous recommendations, spelling differences and branches.
  • Open-now, emergency availability and price claims are not verified booking availability or price quotes. Missing Maps city evidence prevents a verified match.
  • Share of voice is each business’s appearances divided by all recommended-business appearances. Recommendation rate is the fraction of analysed answers recommending it. Free notes do not enter that denominator.
  • History comparisons need a complete run with the same questions, models and settings. Overlapping runs can overwrite a named store’s latest pointer. An interruption during an undelivered model call may repeat separately billed model work after restart.

FAQ

Does it ask AI about my business by name?

The generated customer questions ask about the service and location. The target and competitor lists are not added to the answering prompt. A separate extraction step identifies businesses in the returned answer. Your own explicit prompts are sent as written.

Is a mention the same as a recommendation?

No. Neutral mentions and advice against a business are separated from positive recommendations. Name-based recommendations and exact Maps identity verification are reported separately.

Can I use only a Maps link?

Yes, if it opens one unambiguous listing with a city. Otherwise the run gives a free note asking for a precise name and city. Services or explicit prompts are still needed.

What happens when two businesses have the same name?

The city, listing identity and any street-address evidence are checked. Multiple equally good branches remain ambiguous instead of being assigned the first Maps result.

What does the source report recommend?

It shows the sources cited in the sampled answers and suggests factual checks: listing accuracy, authentic reviews, relevant discussions and useful service/location information. It does not claim guaranteed ranking improvements.

Can I compare weekly runs?

Set a named history store and run the same configuration sequentially. A new model version or changed question set starts a non-comparable snapshot rather than showing a misleading delta.

Does every engine use web search?

Search behaviour depends on the model and provider. The Actor requests web-enabled answers; Gemini can return an answer without citations. That is recorded as zero-cite.

What if the gateway is unavailable?

The affected answers are free notes. Account eligibility for the gateway is controlled by Apify. The Actor does not fall back to a developer’s AI key.

Support

Questions, a site that changed, or a field you need? Open an issue on this Actor's Issues tab: we answer there, usually within a day.


Also found as: local AI visibility tracker, local GEO, AI recommendations for local businesses, local SEO AI tracker, AI share of voice by city, Maps and AI visibility, local business citation tracking.