SEO Helper (on-page audit + SERP preview)
Pricing
from $1.00 / 1,000 page audits
SEO Helper (on-page audit + SERP preview)
Port of the SEO Minion extension as an API: full on-page audits per URL (meta tags, headings, images, links, structured data, hreflang) plus Google SERP snippet previews with truncation flags. No API keys needed.
On-page SEO audits and Google SERP snippet previews as a simple API — a port of the SEO Minion browser extension. No API keys needed. Keyless, plain HTTP fetching (no browser), fast and cheap.
A common SEO question before you make changes: "will my clicks and traffic change?" You find out by running a quick SEO audit — check the snippet and content quality of key pages before and after you change anything, or before you start an SEO campaign (e.g. before moving a new niche site from keyword research to actual edits).
How this compares
Two modes in one actor, an on-page audit (page-audit, $0.001 per page) and a Google SERP snippet preview (serp-preview, $0.001 per page), both over plain HTTP with no browser and no API key. At $1.00 per 1,000 pages it is far below the audit tools below: smart-digital/complete-seo-audit-tool ($40.00 per 1,000 pages analysed), logiover/website-seo-audit-crawler ($10.00), ittechinnovators/advanced-seo-audit-tool---ai-powered-insights ($10.00) and autofacts/metadata-scraper ($5.00). Those tools may return a broader report; check their listings for what each row contains. Platform usage is paid by you on top of the event price.
| Actor | Price per 1,000 pages | Platform usage |
|---|---|---|
| subimpact/seo-helper | $1.00 | paid by you |
| smart-digital/complete-seo-audit-tool | $40.00 | see listing |
| logiover/website-seo-audit-crawler | $10.00 | see listing |
| ittechinnovators/advanced-seo-audit-tool---ai-powered-insights | $10.00 | see listing |
| autofacts/metadata-scraper | $5.00 | see listing |
Prices are Apify Store list prices on the Free plan, checked 24 October 2026. Competitor prices can change; check their listings.
What it does
Mode onpage — full on-page SEO audit (default)
One audit per URL. Each row extracts:
- Title & meta description — value, character length, and a Google over-limit flag
- Canonical tag — value plus automatic canonical-mismatch detection
- Meta robots / meta refresh — indexability signals (
noindexflagged) - Headings H1–H6 — outline text plus H1 count/duplicate checks
- Word count
- Images — total and missing-alt count with URLs
- Open Graph & Twitter card tags
- Links — full list and counts (internal / external / follow / nofollow / sponsored / UGC)
- Hreflang alternates, JSON-LD structured data, microdata itemtypes
- Flat issue flags for quick scanning:
missing-title,title-too-long,missing-meta-description,no-h1,multiple-h1,canonical-mismatch,noindex,all-images-missing-alt - Redirect chain — every HTTP hop with status codes, plus per-row HTTP status and fetch error text
Mode serp_preview — Google snippet preview
One preview per URL: pulls the live title and meta description, applies Google-style truncation (60/155 chars, word-boundary ellipsis), and flags whether Google would truncate it. Optionally override the title/description for specific URLs (useful for testing a rewrite before you publish it).
Input options
{"mode": "onpage","pageUrls": ["https://example.com/product/1", "https://example.com/blog/post"],"maxUrls": 500,"includeLinks": true,"fetchTimeoutSec": 30,"proxyUrl": ""}
| Field | Type | Default | Description |
|---|---|---|---|
mode | onpage | serp_preview | onpage | Audit mode or SERP preview mode |
pageUrls | list of strings | ["https://example.com"] | URLs to audit or preview. A single URL string is also accepted. |
maxUrls | integer ≥ 1 | (empty = no limit) | Optional cap on how many URLs are processed per run |
serpOverrides | list of objects | (empty) | serp_preview only: { "url": "...", "title": "...", "description": "..." } overrides applied before truncation |
useLivePage | boolean | true | serp_preview only: pull title/description from the live page before applying overrides (false = use overrides only) |
includeLinks | boolean | true | onpage only: include the full link + image lists (disable for leaner rows) |
fetchTimeoutSec | integer 5–120 | 30 | Per-page fetch timeout in seconds |
proxyUrl | string | (empty) | Optional HTTP(S) proxy for the fetches |
Sample output (one row)
{"recordType": "page-audit","url": "https://example.com/page","finalUrl": "https://example.com/page","httpStatus": 200,"redirectChain": [],"issues": ["missing-meta-description", "no-h1"],"audit": {"title": "Example Page Title","titleLength": 18,"titleOverLimit": false,"description": "","canonical": "https://example.com/page","canonicalMatchesUrl": true,"robots": "index, follow","headings": [{"tag": "H1", "text": "Welcome"}],"wordCount": 312,"imagesTotal": 4,"imagesMissingAlt": 1,"openGraph": {"og:title": "Example Page Title"},"linkCounts": {"total": 12, "internal": 8, "external": 4},"hreflang": [],"structuredData": []}}
Pages that could not be fetched (HTTP 404/5xx, timeouts, blocks) are delivered as rows with a populated error field, a null audit, and clear status messaging — so you always see exactly which URLs failed.
Usage notes
- URLs are processed sequentially; a typical run processes 150–300 URLs/minute. Use
maxUrlson very large URL lists to stay within the platform timeout. - Works with most websites; sites with aggressive anti-bot protection may need the
proxyUrloption. - The SERP preview is an approximation of Google's presentation rules (60/155 chars with word-boundary truncation); Google may render snippets differently per query.
