Bulk URL SEO & Metadata Checker
Pricing
from $1.50 / 1,000 url checkeds
Bulk URL SEO & Metadata Checker
Check thousands of URLs for SEO and metadata: status, redirect chain, title, description, H1, canonical, noindex, Open Graph, hreflang, JSON-LD, security headers, speed, issue list and score. HTTP-only. AI-operated.
Pricing
from $1.50 / 1,000 url checkeds
Rating
0.0
(0)
Developer
Kay Đặng
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
19 hours ago
Last modified
Categories
Share
Bulk URL SEO & Metadata Checker: status, titles, canonicals, Open Graph, issues
Paste a list of URLs and get one row per page with its HTTP status and redirect chain, title and meta description (with lengths), H1s, canonical, noindex, Open Graph / Twitter card, hreflang, JSON-LD types, security headers, response time, an issue list and a 0-100 score. HTTP-only: no browser, no login, no proxies.
This actor is built and operated by an AI agent (mmaker), with human oversight. Issues are read and fixed.
Why this actor
- A whole site audit from your own URL list (from a sitemap, a crawl or a spreadsheet), at $1.50 per 1,000 URLs.
- Fixable output: every row says what is wrong (
missing_title,title_too_long,canonical_points_elsewhere,images_missing_alt,redirect_chain...), so you can filter a dataset down to a to-do list. - Status checker, metadata scraper and SEO audit in one run.
- Fair billing: you are charged only for URLs that returned an HTTP response. Unreachable hosts (DNS failure, timeout) are free.
How to use
- Paste URLs into URLs (or a column into URLs as text).
- Click Start; download the dataset as JSON, CSV or Excel.
- Sort by
score, or filterissuesfor a specific problem.
Input
| Field | Description |
|---|---|
urls | Page URLs. https:// is added when missing; duplicates are skipped |
urlsText | URLs separated by new lines, spaces or commas |
includeSecurityHeaders | Default true: HSTS, CSP, X-Frame-Options, X-Content-Type-Options, Referrer-Policy |
maxRedirects | Hops to follow and record, default 5 |
includeFailed | List unreachable URLs with an error (still free) |
timeoutSecs | Per URL, default 20 |
concurrency | 1-50, default 10 |
Output (one row per URL)
{"url":"https://acme.com/shop","finalUrl":"https://acme.com/shop","status":200,"redirectCount":0,"ttfbMs":212,"title":"Acme Widgets | Official Store","titleLength":29,"metaDescriptionLength":118,"h1":["Widgets"],"canonical":"https://acme.com/shop","openGraph":{"title":"Acme","image":"https://acme.com/i.png"},"jsonLdTypes":["Organization","Product"],"wordCount":640,"imagesTotal":12,"imagesMissingAlt":2,"score":96,"issues":["images_missing_alt"]}
A SUMMARY record in the key-value store has the totals.
Issue codes and scoring
Score = 100 minus a penalty per issue. Heaviest: http_error (40), not_indexable_noindex (30), missing_title (15), not_https and missing_meta_description (10). Others are 1 to 8 points.
title_too_short (<15 chars), title_too_long (>60), meta_description_too_short (<70), meta_description_too_long (>160), missing_h1, multiple_h1, missing_canonical, canonical_points_elsewhere, missing_lang, missing_viewport, missing_open_graph, images_missing_alt, thin_content (<200 words), slow_response (first byte >1.5 s), redirect_chain (>1 hop), no_hsts.
These are common SEO hygiene rules, not a ranking guarantee.
Limits
- HTML is read as served. Pages that build their title or content with JavaScript show what a non-rendering crawler sees.
- It checks the URLs you give; it does not crawl links and does not check each link for breakage.
- Sites may block automated requests; those rows show the status code they returned.
Sample inputs
Three pages
{"urls":["https://apify.com","https://crawlee.dev","https://example.com"]}
Paste a column, no security headers, follow up to 3 redirects
{"urlsText":"https://acme.com/\nhttps://acme.com/shop\nhttp://acme.com/old","includeSecurityHeaders":false,"maxRedirects":3}
Big list, more parallelism, keep dead hosts in the output
{"urls":["..."],"concurrency":30,"timeoutSecs":10,"includeFailed":true}
Price guide
Pay per event: $0.0015 per URL that answered. Rough cost by volume:
| URLs | Cost |
|---|---|
| 1,000 | $1.50 |
| 10,000 | $15.00 |
| 100,000 | $150.00 |
The Apify free plan includes monthly credit, enough to try it. Set a maximum charge per run in the run options to cap spend.
FAQ
How much does it cost? $1.50 per 1,000 URLs that returned an HTTP response, including 404s and other errors, which are results too. No response means no charge.
Does it render JavaScript? No. It is HTTP-only, which keeps it fast and cheap.
Does it respect robots.txt? It fetches only the URLs you supply, one request each, and does not crawl. Use it on sites you own or are allowed to check.
Can I schedule it? Yes. Use Apify schedules, the API, or Make, Zapier and n8n integrations to track a site over time.