SEO Audit Leads: Bulk On-Page, Technical & Local SEO Checker
Pricing
from $10.00 / 1,000 website seo-auditeds
SEO Audit Leads: Bulk On-Page, Technical & Local SEO Checker
Bulk SEO audit for lead generation: check business websites for noindex, robots.txt and sitemap problems, missing titles, meta descriptions and H1s, HTTPS, mobile viewport, LocalBusiness schema and city mentions. SEO score, grade, lead level and fixes per site. Works with Google Maps Scraper.
Pricing
from $10.00 / 1,000 website seo-auditeds
Rating
0.0
(0)
Developer
Lead Notebook
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
8 days ago
Last modified
Categories
Share
Audit hundreds of business websites for SEO problems in one run, and get the fixes to pitch. Paste a list of websites, or pick the results of a Google Maps Scraper run, and this Actor checks each site's public HTML for the things that keep local businesses out of Google: noindex tags, robots.txt that blocks Googlebot, missing or broken XML sitemaps, canonical tags pointing elsewhere, soft 404s, no HTTPS, no mobile viewport, missing or generic titles, missing meta descriptions and H1s, thin content, images without alt text, no LocalBusiness schema, no address or phone, the city or category missing from the title, and your target keywords missing from the title, H1 or page. Each website gets an SEO score from 0 to 100, a grade from A to F, a lead level, the list of issues with evidence, and the three fixes with the best effort-to-impact ratio.
You pay only for websites that were actually audited. Unreachable, parked, blocked and missing websites are reported for free.
What it checks
| Area | Checks (points subtracted from 100) |
|---|---|
| 🚫 Indexing | noindex on the homepage (meta robots or X-Robots-Tag, 40), robots.txt blocking Googlebot (40) or every crawler (40, free row), canonical tag pointing to another site (25) or page (10), missing canonical (5), missing robots.txt (2) |
| 🗺️ Sitemap | No XML sitemap found (10), sitemap URL returns HTML, an empty response or invalid XML, or robots.txt points to a broken sitemap (10), newest lastmod older than two years (5). Sitemap indexes are followed into their first child. |
| 🔒 HTTPS | Served over plain HTTP with no working HTTPS (25), HTTPS exists but http:// is not redirected (15), mixed content on an HTTPS page (10) |
| 🧭 Technical | Soft 404s (missing pages return 200, 10), a page linked from the homepage returns 404 (10), slow homepage HTML (10–15), HTML over 512 KiB (3), no gzip/brotli (3) |
| 📝 On-page | Missing title (15), generic title such as "Home" (10), title too long (3) or too short (5), duplicate titles across pages (8), missing meta description (10), wrong length (3), duplicate descriptions (5), missing H1 (10), several H1s (5), skipped heading levels (2), images without alt (5–8), thin content under 150/300 words (10/3), missing lang (2), fewer than three internal links (5) |
| 📱 Mobile | No responsive viewport tag (20) |
| 🏷️ Structured data & social | No JSON-LD at all (8), no LocalBusiness entity with address and phone (8), no Open Graph tags (3), no favicon (1) |
| 📍 Local SEO | No phone number (10), no street address (5), the city you supplied not mentioned anywhere (10) or not in the title (5), the business category (from Google Maps or your input) not reflected in the title (8), no link to the Google Business Profile / Maps listing (3) |
| 🎯 Keywords | Your target keywords (per run or per business) missing from the title (6), from the H1 (3) or from every fetched page (8), with a per-keyword check in keywordChecks |
| 📊 Tracking | No analytics or tag manager observed (5; skipped for Wix/Squarespace-style builders with built-in analytics) |
Every issue comes with its category, severity, points, effort (low/medium/high), the observed evidence (the tag, the header, the URL, the measured value), the page it was found on, and a recommendation you can paste into a proposal.
How to get SEO leads from Google Maps
- Run Google Maps Scraper for a search such as "dentists in Denver" or "roofers in Dallas".
- Open SEO Audit Leads and, under Or: Google Maps Scraper results, pick that run's dataset.
- Run it. Sort the SEO leads table by SEO score ascending: the lowest scores are the businesses with the most SEO work to sell, with their emails and phone numbers next to them.
The business name, category, city, country and Google place ID are copied from Maps to every row; the category and city feed the local checks ("Dentist" not in the title, "Denver" not on the page). Businesses that have no website on Maps come back as NO_WEBSITE leads, free of charge.
You can also paste websites directly (one per line), or send rows with your own CRM IDs, category and keywords in Businesses with your own IDs.
SEO score, grade and lead level
The score starts at 100 and loses the points of every issue (floor 0).
| Score | Grade | Lead level | Meaning |
|---|---|---|---|
| 90–100 | A | low | Well optimised; only details left |
| 80–89 | B | low | Minor on-page gaps |
| 65–79 | C | medium | Clear problems worth a proposal |
| 50–64 | D | medium | Several serious problems |
| 0–49 | F | high | Fundamental SEO problems, often not indexable |
The score measures how much visible SEO work the website needs. It is not a ranking prediction and says nothing about the business's budget or intent. Unreachable, parked and missing websites also get a score and a high lead level (they are reported for free).
Output example
{"seoScore": 0,"seoGrade": "F","leadLevel": "high","businessName": "Riverbend Dental","website": "https://mortenmyrmel03.github.io/lbpq-demo-sites/riverbend-dental/","seoStatus": "AUDITED","issueCount": 19,"issues": ["noindex_homepage", "canonical_points_elsewhere", "thin_content", "generic_title", "missing_meta_description", "sitemap_missing", "..."],"issueSummary": "The homepage tells search engines not to index it (meta robots contains \"noindex\"). | The homepage canonical tag points to another website ...","topFixes": ["Remove \"noindex\" from the homepage (meta robots tag or X-Robots-Tag header) so Google can list the site.","Set the canonical tag to the page's own URL (same domain and protocol as the live site).","Replace the generic title with \"<Service> in <City> | <Business name>\" (30-60 characters)."],"title": "Home","metaDescription": null,"h1Count": 2,"wordCount": 64,"indexable": false,"canonicalUrl": "https://www.riverbend-dental-old.example/","sitemapStatus": "missing","mobileViewport": true,"hasLocalBusinessSchema": false,"phones": ["+15415550138"],"issueDetails": [{"id": "noindex_homepage","category": "indexing","severity": "critical","points": 40,"effort": "low","message": "The homepage tells search engines not to index it (meta robots contains \"noindex\").","recommendation": "Remove \"noindex\" from the homepage (meta robots tag or X-Robots-Tag header) so Google can list the site.","evidence": "<meta name=\"robots\" content=\"noindex\">","sourceUrl": "https://mortenmyrmel03.github.io/lbpq-demo-sites/riverbend-dental/"}]}
(Fictional demo business. Click Try for free to run the prefilled demo: a well-optimised site, a poor one, two noindex sites, a parked domain and a dead domain.)
Export the results to CSV, Excel, JSON or Google Sheets, or open the Issue details view (one row per finding, with the fix) or the Technical facts view (indexing, sitemap, HTTPS, speed per site).
Pricing
$10 per 1,000 audited websites ($0.01 each), plus Apify's tiny run-start fee.
- Charged only when a homepage was actually fetched and analysed.
- Free: unreachable websites, parked domains, sites that block crawlers (including a robots.txt that blocks everyone, which is reported as the finding), businesses with no website, invalid URLs and rows over your limits.
- The same website appearing twice is audited and charged once.
- Set a maximum charge per run and the Actor stops starting new websites before it's reached. The rest come back as
NOT_PROCESSEDso you can resubmit them.
Input options
| Field | Default | Meaning |
|---|---|---|
websites | demo list | Websites or domains, one per line |
datasetId | none | A Google Maps Scraper dataset (or any dataset with a website column; categoryName is used as the category) |
targetKeywords | none | Up to 10 keywords checked on every site (title, H1, page text) |
maxWebsites | 200 | Unique websites to audit (up to 5,000) |
maxPagesPerSite | 3 | 1 = homepage only; 3 also reads the contact and services pages (duplicate-title checks, more contact details) |
technicalChecks | true | Sitemap discovery (≤3 requests), one soft-404 probe and the HTTP→HTTPS check |
businesses | none | [{"website", "clientRecordId", "businessName", "category", "city", "country", "keywords": []}] for CRM lists |
defaultCountry | US | Country used to read phone numbers written without +country code |
excludedDomains | none | Domains to skip, for example your current clients |
Statuses
seoStatus | Meaning | Charged |
|---|---|---|
AUDITED | Homepage fetched and analysed | Yes |
UNREACHABLE | Domain doesn't resolve, certificate or server error, timeout | No |
PARKED_DOMAIN | Parked, for-sale or under-construction page | No |
NO_WEBSITE | No website in your data | No |
BLOCKED | The site refuses crawlers (robots.txt for everyone, 403, bot challenge) | No |
INVALID | Not a usable URL, or a private/internal address | No |
NOT_PROCESSED | Over your limits; resubmit later | No |
How it works and its limits
- Reads the public homepage and by default two more pages (contact, services) with plain HTTP requests, plus the sitemap, one deliberately non-existent URL (to detect soft 404s) and the http:// or https:// variant of the homepage. No browser, no logins, no proxies, no third-party SEO APIs; robots.txt is respected (a sitemap or probe path that robots.txt disallows is skipped).
- Findings describe the HTML the site serves. Pages drawn entirely by JavaScript get the indexing, HTTPS, sitemap, speed, title and viewport checks; content checks are skipped and noted in
warnings. - "Not observed" means not found in the fetched pages, not proof that something doesn't exist anywhere on the site.
- No rankings, backlinks, Core Web Vitals or search volumes: those need Google's or a paid SEO vendor's data. This Actor finds the on-page, technical and local problems you can see from the site itself.
- Load time is one measurement from a US data center for the HTML only, so treat it as a hint.
- Dead domains can be temporary. Re-check before you mention it to the business.
- Emails and phone numbers are the ones the business publishes on its own website. Government addresses shown on a business's site, such as the licensing-board complaint notice Texas plumbers must display (
@tsbpe.texas.gov,@hpc.state.tx.us), are never listed as the business's email, and the board's phone number in that notice (for example (512) 936-5200) is never listed as the business's phone; the row'swarningsnames them. Follow your local rules on cold outreach (CAN-SPAM, GDPR and similar).
FAQ
How is this different from a single-site SEO checker? It is built for lists: hundreds of businesses per run, one row per business with your IDs, category and city preserved, a score to sort by and fixes to quote. Use it to find and qualify SEO leads, not to replace a full crawl of one site.
Does it check keyword rankings? No. It checks whether your target keywords appear in the title, H1, meta description and page text, which is what you can fix on the page.
Does it work outside the US? Yes, for any public website. Set defaultCountry (for example GB or AU) so local phone numbers are read correctly. The street-address check is English-language only; other findings are language-independent.
Can I call it from the API, Make, Zapier or n8n? Yes, like any Apify Actor. Send {"websites": ["example.com"], "targetKeywords": ["emergency plumber"]} and read the dataset.
Questions or a feature request? Open an issue on the Issues tab.
More tools from the same developer
- Web Design Leads: audit websites in bulk and find businesses with outdated, broken or non-mobile sites, with a lead score.
- Local Business Leads Enricher: paste business websites, get emails, phones, contact forms, services and tech stack with the source page for each.
- Local Business Leads by City & Category: find businesses by type and city (a Google Maps alternative from open data), with phones, websites and emails.
- Google Trends Trending Now + Bluesky, Wikipedia & Songs: what is trending right now across Google Trends, Bluesky, Mastodon, Wikipedia, Hacker News and Apple Music.