SEO Score API: SEO, AI Readiness and Accessibility Audit avatar

SEO Score API: SEO, AI Readiness and Accessibility Audit

Pricing

Pay per usage

Go to Apify Store
SEO Score API: SEO, AI Readiness and Accessibility Audit

SEO Score API: SEO, AI Readiness and Accessibility Audit

Audit a list of URLs with your own SEO Score API key. One row per URL: SEO score, grade, category and AI readiness scores, and a prioritized fix list. A free key audits 2 URLs per day.

Pricing

Pay per usage

Rating

0.0

(0)

Developer

SEO Score API

SEO Score API

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

13 days ago

Last modified

Categories

Share

Give this Actor a list of URLs and your own SEO Score API key. It audits each page and writes one dataset row per URL: an overall SEO score (0 to 100), a letter grade, a score per category (meta, technical, social, performance, accessibility, AI readability), and a prioritized fix list where every fix has a severity (high, medium or low) and a plain instruction. Audits usually return in seconds.

The Actor is free. It calls the SEO Score API with your key, so your SEO Score API plan decides how many URLs you can audit. A free key audits 2 URLs per day (2 requests per minute, no credit card). Paid plans start at $5/month for 200 audits.

What it checks

  • SEO audit (every plan): 80+ checks per URL on paid plans, covering meta tags, technical SEO, social tags, performance, on-page accessibility, structured data, AI readability and, on paid plans, SXO, AEO and AIO scores. A free key is scored on 50+ checks, and its response details 2 checks per category and the top 2 fixes.
  • Accessibility audit, WCAG 2.1 AA (paid plans, optional): score, grade, lawsuit risk level, violations with the affected elements and a fix for each. Runs on the axe-core engine.
  • GEO audit (Basic plan and up, optional): how visible the page is to AI search and LLM answer engines, with its own score and fix list.

The Actor does not crawl. It audits exactly the URLs you list, one API call per URL per audit type.

Input

FieldRequiredWhat it does
urlsyesPages to audit, one per line.
apiKeynoYour SEO Score API key. Stored as a secret input. Without it the Actor runs one demo audit of the first URL (2 checks per category, top 2 fixes; the row has demo: true).
auditsnoAny of seo, accessibility, geo. Default ["seo"].
includeCoreWebVitalsnoAlso measure Core Web Vitals (LCP, INP, CLS, FCP, TTFB) for each URL. Default off: it adds about 10 seconds per URL not measured in the last 24 hours. Uses no extra audits.
maxAuditsnoStop after this many API calls in the run.
maxConcurrencynoAudits in parallel (default 3). Requests are also paced to your plan's per-minute limit.
includeRawAuditnoInclude the full API response on each row (default on).
requestTimeoutSecsnoTimeout per audit (default 120; at least 60 for SEO audits when Core Web Vitals are on).
{
"urls": ["https://example-shop.com", "https://example-shop.com/pricing"],
"apiKey": "ssa_your_key_here",
"audits": ["seo"]
}

Getting a key

  1. Go to seoscoreapi.com and enter your email (or POST /signup with {"email": "you@example.com"}).
  2. You get a 6-digit code by email. Confirm it (POST /verify with the email and code) and the key is returned.

No credit card is needed for the free key.

Output

One row per URL. This is a real row from a run on a paid key, trimmed:

{
"url": "https://45squared.com",
"status": "ok",
"score": 96.894,
"grade": "A+",
"category_scores": {
"meta": 98.625,
"technical": 95.0,
"social": 100.0,
"performance": 92.5,
"accessibility": 100.0,
"ai_readability": 91,
"sxo": 94,
"aeo": 91,
"aio": 87
},
"priorities": [
{
"severity": "low",
"category": "technical",
"issue": "Schema missing recommended fields",
"fix": "Add recommended schema.org properties to unlock additional rich-result enhancements",
"plain_english": "The page's machine-readable labels could include more detail to unlock extra search features.",
"who_fixes_it": "developer"
}
],
"priorities_note": null,
"accessibility": {
"score": 100,
"grade": "A+",
"standard": "WCAG 2.1 AA",
"lawsuit_risk": "minimal",
"violations": 0,
"best_practice_issues": 0,
"needs_review": 1,
"priorities": []
},
"geo": null,
"errors": [],
"plan": "ultra",
"audited_at": "2026-10-07T18:01:08+00:00",
"audit": { "...": "the full GET /audit response: every check with its status and detail" },
"accessibility_audit": { "...": "the full GET /audit/accessibility response" }
}
FieldMeaning
statusok (every requested audit returned), partial (some did), failed (the page could not be audited), skipped (no call was made: quota used up, plan does not include it, or maxAudits reached).
score, gradeOverall SEO score, 0 to 100, and letter grade.
category_scoresOne score per category. sxo, aeo and aio appear on paid plans.
prioritiesFixes in priority order: severity, category, issue, fix, plain_english, who_fixes_it (developer, content or marketing).
priorities_noteSet on free keys, which see the top 2 fixes.
core_web_vitalsWith includeCoreWebVitals on: status (ok, or unavailable with a reason; pending: true means Google was still measuring, so the next run has it), source (field for real-user data, else lab), lcp_ms, inp_ms, cls, fcp_ms, ttfb_ms. Otherwise null.
accessibility, geoSummaries of those audits when requested, otherwise null.
errorsOne entry per audit that returned no result, with code, http_status, reason and message.
audit, accessibility_audit, geo_auditThe unmodified API responses (when includeRawAudit is on).

A run summary (plan, API calls made, rows by status, and why any audit type stopped) is saved to the key-value store as SUMMARY.

Limits and pricing

The Actor itself has no charge beyond normal Apify platform usage, which is small because it only makes HTTP calls. What you can audit is set by your SEO Score API plan:

PlanPriceAuditsRequests per minuteAccessibility auditsGEO audits
Free$0, no card2 per day2not includednot included
Starter$5/month200 per month105 per monthnot included
Basic$15/month1,000 per month3020 per month1 per month
Pro$39/month5,000 per month60100 per month5 per month
Ultra$99/month25,000 per month120500 per month10 per month

How the Actor handles those limits:

  • It reads your plan and remaining allowance first (GET /usage, which is not counted as an audit) and never sends more audits than you have left. URLs beyond the allowance are written as skipped rows with the reason, so you can see exactly what was not audited.
  • It spaces requests to stay under your plan's per-minute limit. On a free key that means about 30 seconds between the two audits.
  • If the API still answers 429 for the per-minute limit, it waits (using Retry-After when given) and retries up to 3 times. If the 429 or 402 says the allowance is used up, it stops calling that audit type.
  • A page that cannot be loaded (blocked the crawler, DNS failure, timeout) becomes a failed row with the API's reason, and the run continues. The API does not count those against your quota.
  • A timeout or a 502/503/504 is retried once.
  • With includeCoreWebVitals on, SEO audits run at most 3 at a time whatever maxConcurrency says, because each one also waits on a Google PageSpeed Insights measurement. A measurement that is not ready in time does not fail the row: the score is still there and core_web_vitals.status says unavailable.
  • If no URL could be audited at all, the run is marked failed with the reason in the status message.

FAQ

Is this Actor free? Yes. You bring your own SEO Score API key. A free key audits 2 URLs per day. For more, paid plans start at $5/month for 200 audits.

Do I need a credit card for the free key? No.

How long does an audit take? Usually a few seconds per URL. Accessibility audits load the page in a real browser and can take longer.

Can it audit a whole site? Not by itself. It audits the URLs you list. To cover a site, feed it URLs from a sitemap or from a crawler Actor.

Why did some rows come back skipped? Your plan's allowance ran out during the run, the audit type is not in your plan, or maxAudits was reached. The row's errors field says which.

Why are there only 2 fixes on my rows? Free keys see the top 2 fixes and 2 checks per category. Paid plans return the full list.

Does a higher score mean higher rankings? No tool can promise that. The score measures how many known on-page and technical problems a page has. Fixing them removes obstacles; it does not guarantee a position.

Is my API key safe? The key is a secret input, is only sent to https://seoscoreapi.com/?utm_source=apify&utm_medium=directory in the X-API-Key header, and is never written to the dataset or the log.

Can I call the API directly instead? Yes: curl -H "X-API-Key: YOUR_KEY" "https://seoscoreapi.com/audit?url=https://example-shop.com". Docs are at seoscoreapi.com/docs. There are also Python and Node clients, an n8n node, a GitHub Action and an MCP server.

Alternatives, and when they fit better

  • An Actor with no outside key. Several Apify Actors run their own on-page checks and bill per result through Apify. If you want one bill and do not want a second account, pick one of those. This Actor fits better when you want the same scores your team already gets from SEO Score API in CI, n8n or code, or when you need the accessibility and AI readiness audits in the same row.
  • Google PageSpeed Insights or Lighthouse. Better when you only need lab performance metrics and Core Web Vitals, and they are free. They do not score AI readiness and their SEO category is a short list.
  • axe or Pa11y run directly. Better when you need to script accessibility tests against pages behind a login or in a local build. The accessibility audit here uses the same axe-core engine against public URLs and adds a score and risk level.
  • Keyword and backlink suites (Ahrefs, Semrush, DataForSEO). This Actor audits pages. It does not provide keyword volumes, rank tracking or a backlink index. Use those tools for that.

Support

Questions or a wrong result: info@seoscoreapi.com, or open an issue on this Actor's Issues tab.