Locations Metrics & Local SEO Geo-Grid API
Pull per-store Google Business Profile impressions, clicks, calls, direction requests, peak footfall days, Facebook/Instagram location metrics, and Local SEO Geo-Grid Share of Voice.
Use these endpoints to feed store-level local search visibility, customer actions, and Geo-Grid competitor rankings into PowerBI, Looker Studio, Snowflake, or BigQuery.
1. Store & Location Performance Metrics (GET /api/v1/reports/locations/metrics)
Endpoint: GET https://profilepilotapp.com/api/v1/reports/locations/metrics Required Scope: reports:read or locations:read Required Product Subscription: Locations & Reputation + Developer API Access
Query Parameters:
startDate(YYYY-MM-DD, optional) — Start of reporting window (defaults to 30 days ago UTC).endDate(YYYY-MM-DD, optional) — End of reporting window (defaults to today UTC; clamped to 366 days max).storeCodeorstore_code(string, optional) — Filter Google, Facebook, and Instagram location records to a single branchstore_code.platform("all"|"google"|"meta", optional, default"all") — Restrict daily metric aggregation to Google Business Profile ("google"), Meta Facebook/Instagram ("meta"), or both ("all").
Performance Metrics & Response Fields:
period—{ startDate, endDate }UTC date range evaluated.footprint— Connected location counts across channels:google_locations,meta_locations,instagram_locations,bing_locations, andenterprise_store_locations(submitted master stores).google_totals— Organisation-wide Google Business Profile sums across the period:impressions(number) — Total listing views across Search and Maps (desktop + mobile).maps_impressions(number) — CombinedBUSINESS_IMPRESSIONS_DESKTOP_MAPS+BUSINESS_IMPRESSIONS_MOBILE_MAPS.search_impressions(number) — CombinedBUSINESS_IMPRESSIONS_DESKTOP_SEARCH+BUSINESS_IMPRESSIONS_MOBILE_SEARCH.website_clicks(number),call_clicks(number),direction_requests(number),booking_clicks(number),messages(number).engagement(number) —website_clicks + call_clicks + direction_requests.leads(number) —call_clicks + booking_clicks + messages.total_interactions(number) —engagement + booking_clicks + messages.meta_totals— Organisation-wide Meta location sums:facebook:{ reach, post_engagements, page_views, total_fans }.instagram:{ impressions, reach, followers }.stores[]— Per-location breakdown sorted byimpressionsdescending:store_code(string | null),name(stringhumanized display name),google_location_id(string),account_id(string | null),status("open"|"temporarily_closed"|"closed").impressions,maps_impressions,search_impressions,website_clicks,call_clicks,direction_requests,booking_clicks,messages,engagement,leads,total_interactions(number).peak_days(string) — Top weekday(s) for customer direction requests (e.g."Sat & Fri"or"—"when no direction requests occurred).meta—{ org_id, api_usage: { month, used, limit, remaining } }.
curl -sS -X GET "https://profilepilotapp.com/api/v1/reports/locations/metrics?startDate=2026-10-01&endDate=2026-10-20&platform=all" \
-H "Authorization: Bearer ppapi_your_secret_key"{
"ok": true,
"period": { "startDate": "2026-10-01", "endDate": "2026-10-20" },
"platform": "all",
"store_code": null,
"footprint": {
"google_locations": 42,
"meta_locations": 38,
"instagram_locations": 12,
"bing_locations": 40,
"enterprise_store_locations": 42
},
"google_totals": {
"impressions": 482910,
"maps_impressions": 310400,
"search_impressions": 172510,
"website_clicks": 14200,
"call_clicks": 8930,
"direction_requests": 29410,
"booking_clicks": 410,
"messages": 190,
"engagement": 52540,
"leads": 9530,
"total_interactions": 53140
},
"meta_totals": {
"facebook": {
"reach": 128400,
"post_engagements": 9420,
"page_views": 18300,
"total_fans": 64200
},
"instagram": {
"impressions": 84100,
"reach": 61200,
"followers": 29400
}
},
"stores": [
{
"store_code": "CPT-001",
"name": "Cape Town Flagship",
"google_location_id": "locations/123456789",
"account_id": "accounts/987654321",
"status": "open",
"impressions": 19420,
"maps_impressions": 12400,
"search_impressions": 7020,
"website_clicks": 610,
"call_clicks": 380,
"direction_requests": 1420,
"booking_clicks": 25,
"messages": 12,
"engagement": 2410,
"leads": 417,
"total_interactions": 2447,
"peak_days": "Sat & Fri"
}
],
"meta": {
"org_id": "00000000-0000-0000-0000-000000000000",
"api_usage": { "month": "2026-10", "used": 14, "limit": 500000, "remaining": 499986 }
}
}2. Local SEO Geo-Grid & Share of Voice (GET /api/v1/reports/seo-grid)
Endpoint: GET https://profilepilotapp.com/api/v1/reports/seo-grid Required Scope: reports:read Required Product Subscription: Locations & Reputation + Developer API Access
Query Parameters:
gridIdorgrid_id(UUID, optional) — Inspect a specific Geo-Grid configuration (defaults to the organisation’s most recently scanned grid).scanIdorscan_id(UUID, optional) — Inspect a specific historical scan snapshot (defaults to the latest successful scan).leaderboardLimit(number, optional,5–40, default20) — Maximum competitors returned inleaderboard[].
Performance Metrics & Response Fields:
grids[]— List of configured Geo-Grids in the organisation (id,name,location_id,center_lat,center_lng,rows,cols,spacing_m,keyword,schedule_frequency,schedule_next_run_at,created_at).empty(boolean) &empty_reason(string | null) —trueif no completed Geo-Grid scan exists yet.scan— Metadata for the evaluated scan:{ scanId, gridId, gridName, keyword, scannedAt, pointsBilled, totalPoints, pointsWithResults }.tracked_place_id(string | null) — Googleplace_idmatched to your tracked store.your_avg_rank(number | null) — Your average SERP pack position across all grid pins where your store appeared (1.0is #1 on every pin).your_best_rank(number | null) — Highest rank achieved across any pin in the scan.your_pin_visibility_pct(number | null) — Percentage of grid coordinate pins where your business appeared in the local pack (appearances / pointsWithResults × 100).sov_pct(number | null) — Your rank-weighted Share of Voice % across the grid (Rank 1 carries weight20, Rank 20 carries weight1, matching Mission Control and Executive Reports).leaderboard[]— Top competitors ranked by Share of Voice ({ placeId, name, appearances, pinVisibilityPct, shareOfVoicePct, avgRank, bestRank, avgRating, maxReviews, isYou }).benchmark[]— Normalized 0–100 multi-axis competitor benchmark comparison for the top 5 pack leaders + your tracked listing.
curl -sS -X GET "https://profilepilotapp.com/api/v1/reports/seo-grid?leaderboardLimit=10" \
-H "Authorization: Bearer ppapi_your_secret_key"{
"ok": true,
"grids": [
{
"id": "9b1a2c3d-4e5f-6a7b-8c9d-0e1f2a3b4c5d",
"name": "Cape Town Flagship",
"location_id": "locations/123456789",
"center_lat": -33.9249,
"center_lng": 18.4241,
"rows": 7,
"cols": 7,
"spacing_m": 1000,
"keyword": "wholesale grocer near me",
"schedule_frequency": "weekly",
"schedule_next_run_at": "2026-10-27T06:00:00Z",
"created_at": "2026-08-01T10:00:00Z"
}
],
"empty": false,
"empty_reason": null,
"scan": {
"scanId": "a1b2c3d4-1111-2222-3333-444455556666",
"gridId": "9b1a2c3d-4e5f-6a7b-8c9d-0e1f2a3b4c5d",
"gridName": "Cape Town Flagship",
"keyword": "wholesale grocer near me",
"scannedAt": "2026-10-20T06:02:14Z",
"pointsBilled": 49,
"totalPoints": 49,
"pointsWithResults": 49
},
"tracked_place_id": "ChIJ1234567890abcdef",
"your_avg_rank": 2.4,
"your_best_rank": 1,
"your_pin_visibility_pct": 91.8,
"sov_pct": 34.2,
"leaderboard": [
{
"placeId": "ChIJ1234567890abcdef",
"name": "Cape Town Flagship",
"appearances": 45,
"pinVisibilityPct": 91.8,
"shareOfVoicePct": 34.2,
"avgRank": 2.4,
"bestRank": 1,
"avgRating": 4.7,
"maxReviews": 412,
"isYou": true
}
],
"benchmark": [
{
"place_id": "ChIJ1234567890abcdef",
"name": "Cape Town Flagship",
"rating": 4.7,
"review_count": 412,
"shareOfVoicePct": 34.2,
"isYou": true
}
],
"meta": {
"org_id": "00000000-0000-0000-0000-000000000000",
"api_usage": { "month": "2026-10", "used": 15, "limit": 500000, "remaining": 499985 }
}
}3. Troubleshooting & Common Scenarios
- `peak_days` returns `"—"`: Peak days are computed from daily
BUSINESS_DIRECTION_REQUESTSbuckets across the selectedstartDate..endDate. If a store had zero direction requests in that window,"—"is returned. - Difference between `your_pin_visibility_pct` and `sov_pct`: Pin visibility measures presence anywhere in the top 20 results on a coordinate pin, whereas
sov_pctweights each pin by rank (21 - rank) against all competitors in the grid. - `empty: true` on `/api/v1/reports/seo-grid`: Either no Geo-Grid has been created under Competitor Analysis → Local SEO Grid or the first scan has not completed yet (
empty_reasonexplains which).
- Grant reports:read scope to your API key in Settings → Developer API
- Call GET /api/v1/reports/locations/metrics with startDate and endDate
- Use stores[].peak_days and per-store metric columns for location BI tables
- Call GET /api/v1/reports/seo-grid for rank-weighted Share of Voice and competitor leaderboards
Developer API Reference
All Developer & Reporting API Modules
locations:readlocations:writeEnterprise Store Locations API
Push and query your canonical store master records (up to 100 stores per batch) by store_code.
reports:readlocations:readLocations Metrics & Local SEO Geo-Grid API
Pull Google Business Profile impressions, website clicks, phone calls, direction requests, peak footfall days, Meta store metrics, and Geo-Grid Share of Voice.
reputation:readreports:readReputation, Reviews, Red Flags & CSAT API
Export star ratings, customer reviews, reply rates, business-hours response times, Red Flag alerts, and Customer Satisfaction cases.
whatsapp:readreports:readWhatsApp Commerce, Orders, Finance & Usage API
Export WhatsApp orders with normalized line items, fulfilment SLAs, paid GMV analytics, metered message volume, Auth OTP challenges, and loyalty balances.
email:readmarketing:readreports:readEmail Marketing, Workflows & Omnichannel Campaigns API
Pull active eligible subscriber counts, email campaign & automation engagement rates, WhatsApp marketing campaigns, and multi-platform social posts.
inbox:readsocial:readreports:readSmart Inbox SLA & Social Inbox Engagement API
Export Smart Inbox ticket volumes and business-hours SLA metrics alongside Facebook & Instagram comment sentiment and actionable response rates.
insights:readreports:readInsights Paid Media, GA4, Search Console & Attribution API
Pull paid media performance (Google Ads & Meta Ads), GA4 sessions and conversions, Google Search Console metrics, and True Attribution revenue.