LSD

Local Audit

Run a complete local SEO audit with a single API call. Returns SERP data, local pack rankings, business profile, reviews, and competitor analysis — everything you need for a comprehensive report.

When to use this

You want a complete health check of any local business in one shot. Think of it like a doctor's checkup for your Google presence — it checks your rankings, reviews, profile, and competitors, then tells you exactly what to fix. Perfect for agencies onboarding new clients or business owners who want a quick assessment.

POST/v1/audit/local
Cost: 50 credits ($0.25)
Rate Limit: Varies by plan
Response: Asynchronous. The submit returns a job_id in about a second; the audit itself runs around 30 seconds because it fans out across several lookups. Collect it from poll_url.

Parameters

ParameterTypeRequiredDescription
business_namestringYesBusiness name to audit
locationstringYesCity and state

Example Request

curl -X POST https://api.localseodata.com/v1/audit/local \
  -H "Authorization: Bearer sk_live_your_key" \
  -H "Content-Type: application/json" \
  -d '{
    "business_name": "Mike\'s Plumbing",
    "location": "Denver, CO"
  }'

Example Response

JSON
// The submit. Credits are charged here.
{
  "status": "success",
  "credits_used": 50,
  "data": {
    "job_id": "audit_V1StGXR8Z5",
    "status": "pending",
    "estimated_seconds": 30,
    "poll_url": "/v1/audit/local/status/audit_V1StGXR8Z5"
  }
}

// GET the poll_url until status is "complete" or "failed". Polling is free.
{
  "status": "success",
  "credits_used": 0,
  "data": {
    "job_id": "audit_V1StGXR8Z5",
    "status": "complete",
    "local_pack_position": 3,
    "organic_positions": [{ "keyword": "plumber denver", "rank": 12 }],
    "rating": 4.2,
    "reviews_count": 156,
    "profile_completeness": 72,
    "review_velocity": 3.4,
    "competitors": [
      { "name": "Rocky Mountain Plumbing", "rank": 1, "rating": 4.7, "reviews_count": 312, "profile_completeness": 95 },
      { "name": "Denver Pro Plumbing", "rank": 2, "rating": 4.5, "reviews_count": 224, "profile_completeness": 88 }
    ],
    "recommendations": [
      "Review count (156) is below competitor average (268). Focus on review generation.",
      "Missing Saturday hours. 40% of local searches happen on weekends."
    ],
    "completed_at": "2026-09-20T21:34:25.447Z"
  }
}

Response Fields

FieldTypeDescription
job_idstringThe audit's id. The submit returns it; the poll URL carries it
statusstring"pending" while the audit runs, then "complete" or "failed"
poll_urlstringSubmit only. GET this path to collect the audit. Polling is free and does not expire
progressintegerWhile pending: steps finished so far, out of total_steps
local_pack_positioninteger | nullWhere the business sits in the local pack, or null if it is not in it
organic_positionsarrayOrganic rank per keyword the audit checked
ratingfloat | nullGoogle rating, or null where the profile carries none
reviews_countintegerGoogle review count
profile_completenessintegerHow much of the Google Business Profile is filled in, 0-100
review_velocityfloatReviews gained per month over the recent window
competitorsarrayCompetitors with name, rank, rating, reviews_count and profile_completeness
recommendationsstring[]Actionable improvement suggestions
errorstringOn status "failed" only: why the audit died

Notes

  • This endpoint submits and returns immediately. It hands back a job_id and a poll_url, not an audit — GET the poll_url until status is "complete". Polling is free and does not expire.
  • Credits are charged at submit; a failed audit is refunded in full. The poll response reads credits_used: 0.
  • This is the most powerful endpoint — combines data from 5+ individual endpoints.
  • Great for client prospecting, onboarding audits, and monthly reports.