SEO Check API
Audit the on-page SEO of a URL: title, description, headings, canonical, noindex, hreflang, Open Graph, alt text, structured data, robots.txt and sitemap, with a score.
The SEO check API fetches a page like a crawler and reviews what search engines and social networks read: HTTP status and redirects, HTTPS, response time, the length of the title and meta description, the number of H1 headings and skipped heading levels, the canonical URL, noindex in meta robots or the X-Robots-Tag header, hreflang alternates, the lang attribute, the mobile viewport, Open Graph and Twitter tags for link previews, images without alt text, links without text, the amount of text, JSON-LD structured data and the HTML size.
It also reads the site’s robots.txt to tell whether the page is blocked for crawlers and whether a sitemap is declared (robots=false skips it). Each item is a check with a status (pass, info, warn, fail) and a message in English or Vietnamese (lang=vi); the score (0–100) and grade weigh the items that matter most, such as indexability, status and title.
The page object gives the extracted values (title, description, H1s, canonical, Open Graph, link counts, word count, structured data types) for your own rules. Results are cached for 10 minutes (fresh=true to re-check). It analyses the HTML as served, without running JavaScript; Core Web Vitals and backlinks are out of scope.
Parameters
| Name | In | Type | Required | Default | |
|---|---|---|---|---|---|
url | body|query | string | yes | Page URL (http or https). | |
lang | body|query | string | no | en | Language of the messages: en or vi. |
robots | body|query | boolean | no | true | false: skip the robots.txt / sitemap checks. |
fresh | body|query | boolean | no | false | Bypass the 10-minute cache. |
Example
curl "https://apibox.io.vn/v1/seo-check?url=https://vnexpress.net/&lang=vi" \
-H "Authorization: Bearer YOUR_API_KEY"const res = await fetch('https://apibox.io.vn/v1/seo-check?url=https://vnexpress.net/&lang=vi', {
method: 'GET',
headers: {
Authorization: 'Bearer YOUR_API_KEY',
},
});
const data = await res.json();
console.log(data);import requests
res = requests.get(
"https://apibox.io.vn/v1/seo-check?url=https://vnexpress.net/&lang=vi",
headers={"Authorization": "Bearer YOUR_API_KEY"},
timeout=30,
)
print(res.json())<?php
$ch = curl_init('https://apibox.io.vn/v1/seo-check?url=https://vnexpress.net/&lang=vi');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer YOUR_API_KEY'],
]);
$response = curl_exec($ch);
print_r(json_decode($response, true));Response
{
"url": "https://vnexpress.net/",
"final_url": "https://vnexpress.net/",
"status": 200,
"response_ms": 146,
"score": 76,
"grade": "C",
"summary": {
"passed": 14,
"info": 2,
"warnings": 1,
"errors": 1
},
"page": {
"title": "Báo VnExpress - Báo tiếng Việt nhiều người xem nhất",
"h1": [],
"headings": {
"h1": 0,
"h2": 1,
"h3": 27,
"h4": 0,
"h5": 0,
"h6": 0
},
"lang": "vi",
"canonical": "https://vnexpress.net/",
"word_count": 1257,
"structured_data": [
"WebSite",
"Organization"
],
"…": "…"
},
"robots_txt": {
"url": "https://vnexpress.net/robots.txt",
"found": true,
"sitemaps": [
"…"
],
"blocked": false
},
"checks": [
{
"id": "title",
"status": "pass",
"message": "Tiêu đề dài 51 ký tự",
"value": "Báo VnExpress - Báo tiếng Việt nhiều người xem nhất"
},
{
"id": "description",
"status": "warn",
"message": "Meta description dài 192 ký tự (nên khoảng 70–160)",
"value": "…"
},
{
"id": "h1",
"status": "fail",
"message": "Không có thẻ <h1>"
},
"…"
]
}
Use cases
- SEO checks in CMS, website builders and agency dashboards
- Pre-launch checklists in CI for landing pages
- Monitor key pages for accidental noindex or missing titles
- Teach on-page SEO with concrete feedback
FAQ
Does it run JavaScript?
No. It analyses the HTML returned by the server, like most crawlers on their first pass. Pages that build their content only in the browser will look empty; server-side rendering fixes that.
What title length is best?
About 30–60 characters, so it is descriptive and not cut in search results. Meta descriptions: about 70–160 characters.
Why is my score low with only warnings?
Warnings cost 5 points each and errors 15, multiplied for important checks (indexability, status, HTTPS, title). Fix the fail items first.
Related APIs
URL Metadata
Fetch any URL and get its title, description, Open Graph and Twitter Card tags, favicon, canonical, feeds and JSON-LD as JSON.
H:HTTP Headers
See the HTTP status and every response header of a URL, with a summary of security headers like HSTS, CSP and X-Frame-Options.
301Redirect Checker
Follow every 301, 302, 307 and 308 redirect of a URL and get the full chain with status codes, the final URL and the number of hops.