API

Website Audit

You are reading the Project API docs

Base URL: api4.seranking.com

Project API uses subscription limits. Fro more information visit API credit system.

Data API and Project API keys are not interchangeable — use the correct one to avoid authentication errors.

Data apikey example:
80cfee7d-xxxx-xxxx-xxxx-fc8500816bb3
(UUID format)
Project apikey example:
253a73adxxxxxxxxxxxxxx340aa0a939
(40-char hex)

API keys are available in your account. For any questions or 401 errors, email [email protected] for support.

Website Audit API provides endpoints to manage the full lifecycle of technical SEO audits. You can launch new audits, monitor progress, retrieve detailed reports, page-level data, and historical snapshots.


Create audit

POST https://api4.seranking.com/audit/create

Launches an audit that crawls the HTML of a website. Suitable for most static and server-side rendered sites.

Note: Page crawl limit depends on your subscription plan.

Request parameters

ParameterTypeRequiredDescription
domainStringYesDomain to be audited (e.g., domain.com).
titleStringNoCustom title of the audit report (max 300 characters). Defaults to domain.
settingsObjectNoAudit configuration settings. Only include parameters you want to override (see settings object below).

settings object (optional)

  • Crawl sources:
ParameterTypeDescription
source_siteIntegerScan pages by following internal links from the homepage (1 – yes, 0 – no). If 0, scans only from the sitemap or a provided list. Defaults to 1.
source_sitemapIntegerScan pages from the sitemap.xml file (1 – yes, 0 – no). Defaults to 1.
source_subdomainIntegerScan subdomains (1 – yes, 0 – no). If 0, subdomain links are treated as external. Defaults to 0.
source_fileIntegerScan only URLs from a custom list (1 – yes, 0 – no). Defaults to 0.
  • Crawl behavior:
ParameterTypeDescription
check_robotsIntegerFollow robots.txt directives (1 – yes, 0 – no). Defaults to 1.
ignore_noindexIntegerIgnore pages with a noindex tag (1 – yes, 0 – no). Defaults to 0.
ignore_nofollowIntegerIgnore links with a nofollow attribute (1 – yes, 0 – no). Defaults to 0.
ignore_paramsIntegerIgnore URL parameters (0 – none, 1 – all, 2 – custom list). Defaults to 0.
custom_paramsStringCustom URL parameters to ignore when ignore_params is set to 2. Defaults to:
utm_source,utm_medium,utm_term,utm_content,utm_campaign,cid,PHPSESSID
user_agentIntegerUser-Agent header to use for the crawl. Defaults to 0.
Possible values:
• 0 – SE Ranking bot
• 1 – Googlebot
• 2 – Googlebot Image
• 3 – Bingbot
• 4 – Yahoo! Slurp
• 5 – YandexBot
• 6 – BaiduSpider
• 7 – Chrome on Windows
• 8 – Chrome on macOS
• 9 – Chrome on iOS
• 10 – Firefox on Windows
• 11 – Firefox on Linux
• 12 – Safari on macOS
• 13 – Opera on Windows
csrIntegerEnable JavaScript rendering (1 – enabled, 0 – disabled). Defaults to 0.
Essential for SPAs and sites with dynamically loaded content.
loginStringUsername for Basic HTTP Authentication. Defaults to null.
passwordStringPassword for Basic HTTP Authentication. Defaults to null.
  • Crawl limits:
ParameterTypeDescription
max_pagesIntegerMaximum number of pages to crawl (1–300,000). Defaults to 1000.
max_depthIntegerMaximum crawl depth (1–100). Defaults to 10.
max_reqIntegerMaximum number of requests per second (1–500). Defaults to 500.
max_redirectsIntegerMaximum number of redirects to follow (1–50). Defaults to 5.
max_sizeIntegerMaximum page size in kilobytes (1–100,000). Defaults to 3000.
  • On-page thresholds:
ParameterTypeDescription
min_title_lenIntegerMinimum title length (1–10,000). Defaults to 20.
max_title_lenIntegerMaximum title length (1–10,000). Defaults to 65.
min_description_lenIntegerMinimum meta description length (1–10,000). Defaults to 1.
max_description_lenIntegerMaximum meta description length (1–10,000). Defaults to 158.
min_wordsIntegerMinimum word count per page (1–10,000). Defaults to 250.
max_h1_lenIntegerMaximum H1 length (1–10,000). Defaults to 100.
max_h2_lenIntegerMaximum H2 length (1–10,000). Defaults to 100.
  • URL filtering:
Note: Multiple paths must be separated by newline.
ParameterTypeDescription
allowStringCrawl only URLs that start with the specified path. Defaults to null.
disallowStringExclude URLs that start with the specified path. Defaults to null.
hideStringHide URLs and resources that start with the specified path. Defaults to null.
  • Scheduling:
ParameterTypeDescription
schedule_typeStringAudit execution frequency. Possible values: manual, week, month. Defaults to manual.
schedule_dayIntegerDay of month for the scheduled audit when schedule_type is month (1-31). Defaults to 1.
schedule_wdaysArrayDays of week for the scheduled audit when schedule_type is week (array of integers 1-7). Defaults to [].
schedule_hourIntegerHour of day (UTC) for the scheduled audit (0-23). Defaults to 0.
schedule_repeatIntegerEnable repeated audits (1 – yes, 0 – no). Defaults to 0.
schedule_repeat_intervalIntegerInterval in weeks between repeated audits (when schedule_repeat is 1). Defaults to 2.
  • Reporting:
Note: Multiple emails must be comma-separated.
ParameterTypeDescription
send_reportIntegerSend the audit report via email (1 – yes, 0 – no). Defaults to 1.
report_emailsStringEmail addresses to receive the audit report. If empty "", the report is sent to the account owner.

Request example

Copy
curl --location 'https://api4.seranking.com/audit/create' \
--header 'Content-Type: application/json' \
--header 'Authorization: Token YOUR_API_KEY' \
--data '{
"domain": "example.com",
"title": "Full Audit - example.com",
"settings": {
"source_site": 1,
"source_sitemap": 1,
"source_subdomain": 1,
"source_file": 0,
"check_robots": 1,
"ignore_noindex": 1,
"ignore_nofollow": 1,
"ignore_params": 2,
"custom_params": "utm_source, utm_medium, utm_term, utm_content, utm_campaign, cid, PHPSESSID, fbclid, gclid",
"csr": 0,
"user_agent": 0,
"login": "",
"password": "",
"max_pages": 10000,
"max_depth": 15,
"max_req": 300,
"max_redirects": 10,
"max_size": 5000,
"min_title_len": 30,
"max_title_len": 60,
"min_description_len": 50,
"max_description_len": 160,
"min_words": 300,
"max_h1_len": 70,
"max_h2_len": 80,
"allow": "/blog\n/products",
"disallow": "/admin\n/staging",
"hide": "/cdn-cgi\n/wp-json",
"schedule_type": "week",
"schedule_wdays": [1, 2],
"schedule_hour": 6,
"schedule_day": 1,
"schedule_repeat": 1,
"schedule_repeat_interval": 1,
"send_report": 1,
"report_emails": "[email protected], [email protected]"
}
}'

Response parameters

If successful, the server returns a JSON object containing the unique ID for the newly created audit.

ParameterTypeDescription
idIntegerUnique identifier of the audit report.

Response example

Copy
{
   "id": 700237036
}

List audits

GET https://api4.seranking.com/audit/list

Retrieves all audits associated with the account. Supports filtering and pagination.

Request parameters

ParameterTypeRequiredDescription
limitIntegerNoNumber of audits to return. Defaults to 100.
offsetIntegerNoNumber of audits to skip before starting to collect the result set. Defaults to 0.
searchStringNoFilters audits by matching title or URL.
date_startStringNoStart date for filtering audits (in YYYY-MM-DD).
date_endStringNoEnd date for filtering audits (in YYYY-MM-DD).

Request example

Copy
curl --location 'https://api4.seranking.com/audit/list?limit=10&offset=0&search=booking.com&date_start=2025-07-01&date_end=2025-07-31' \
--header 'Authorization: Token YOUR_API_KEY'

Response parameters

If successful, the server returns a JSON object containing the total number of audits and an array of audit objects.

ParameterTypeDescription
totalIntegerNumber of audits matching the filter criteria.
itemsArrayArray of audit objects.

Each object in the items array has the following structure:

ParameterTypeDescription
idIntegerUnique identifier of the audit report.
group_idIntegerAudit group identifier.
urlStringURL of the audited website.
titleStringTitle of the audit report.
has_projectBooleanIndicates whether the audit is linked to a project.
site_idIntegerInternal site identifier.
last_updateStringDate of last audit update ( in YYYY-MM-DD).
statusStringCurrent audit status (for example, finished, processing).
errorStringError message if the audit failed, otherwise null.
error_paramsObjectError details if available.
statsObjectLatest audit statistics.
prev_statsObjectStatistics from the previous audit run (can be null).
versionStringAudit engine version.
owner_account_idIntegerOwner account identifier.
is_newIntegerIndicates whether the audit is newly created (1 – yes, 0 – no).

Response example

Copy
{
    "items": [
        {
            "id": 700138456,
            "group_id": 0,
            "url": "http://booking.com",
            "title": "booking.com",
            "has_project": true,
            "site_id": 10113599,
            "last_update": "2025-07-08",
            "status": "finished",
            "error": null,
            "error_params": null,
            "stats": {
                "score": 69,
                "errors": 2303,
                "warnings": 3710,
                "notices": 10875,
                "crawled": 1830
            },
            "prev_stats": null,
            "version": "2.0",
            "owner_account_id": 4242308,
            "is_new": 1
        }
    ],
    "total": 1
}

Get audit status

GET https://api4.seranking.com/audit/{audit_id}/

Returns the real-time status of a specific audit. Useful for monitoring crawl progress before fetching the full report.

Request parameters

ParameterTypeRequiredDescription
audit_idIntegerYesUnique audit ID (path parameter).

Request example

Copy
curl --location 'https://api4.seranking.com/audit/700183831/' \
--header 'Authorization: Token YOUR_API_KEY'

Response parameters

If successful, the server returns a JSON object containing the current audit status and key metrics.

ParameterTypeDescription
statusStringCurrent audit status. Possible values: queued, processing, finished, cancelled, expired.
total_pagesIntegerNumber of pages crawled.
total_errorsIntegerNumber of errors found.
total_warningsIntegerNumber of warnings found.
total_passedIntegerNumber of passed checks.
start_timeStringAudit start timestamp.
audit_timeStringAudit completion timestamp. Present if the audit is finished.

Response example

Copy
{
    "total_pages": 1009,
    "total_warnings": 979,
    "total_errors": 346,
    "total_passed": 77,
    "status": "finished",
    "start_time": "2025-07-29 11:06:23",
    "audit_time": "2025-07-29 11:19:33"
}

Get audit report

GET https://api4.seranking.com/audit/{audit_id}/report

Returns a complete audit report, including health score, domain properties, and issues.

Request parameters

ParameterTypeRequiredDescription
audit_idIntegerYesUnique audit ID (path parameter).

Request example

Copy
curl --location 'https://api4.seranking.com/audit/700183831/report' \
--header 'Authorization: Token YOUR_API_KEY'

Response parameters

If successful, the server returns a JSON object containing the complete audit report.

ParameterTypeDescription
is_finishedBooleanIndicates whether the audit is completed.
score_percentIntegerOverall website health score (0–100).
total_pagesIntegerNumber of pages crawled.
total_errorsIntegerNumber of errors found.
total_warningsIntegerNumber of warnings found.
total_noticesIntegerNumber of notices found.
total_passedIntegerNumber of passed checks.
audit_timeStringAudit completion timestamp.
domain_propsObjectDomain properties and metadata (see domain_props object below).
sectionsArrayAn array of objects, where each object represents a category of audit checks (see sections array below).

domain_props object

ParameterTypeDescription
dtIntegerDomain trust score.
domainStringDomain name.
domainsStringNumber of referring domains.
expdateStringExpiration date of domain registration.
updatedStringLast update timestamp.
backlinksStringNumber of backlinks pointing to the domain.
index_googleStringNumber of pages indexed in Google.
all_checkedBooleanIndicates whether all domain checks are completed.

sections array

ParameterTypeDescription
uidStringSection identifier.
nameStringSection name.
propsObjectSection checks and results.
Object where each key is a check identifier and the value is a check result object (see structure below).

Each props object has the following structure:

ParameterTypeDescription
codeStringUnique check identifier.
statusStringCheck result. Possible values: error, warning, notice, passed.
nameStringCheck name.
valueIntegerNumber of affected pages.

Response example

Copy
{
    "total_pages": 1009,
    "total_warnings": 979,
    "total_errors": 346,
    "total_passed": 77,
    "total_notices": 3915,
    "is_finished": true,
    "domain_props": {
        "dt": 44,
        "domain": "www.vitality.co.uk",
        "domains": "3401",
        "expdate": "2025-08-30",
        "updated": "2025-07-29 12:07:28",
        "backlinks": "212249",
        "index_bing": 15500,
        "all_checked": true,
        "index_yahoo": 15500,
        "index_google": "1380"
    },
    "sections": [
        {
            "uid": "security_v2",
            "name": "Security",
            "props": {
                "no_https": {
                    "code": "no_https",
                    "status": "error",
                    "name": "No HTTPS encryption",
                    "value": 0
                },
                "mixed_content": {
                    "code": "mixed_content",
                    "status": "error",
                    "name": "Mixed content",
                    "value": 0
                }
            }
        },
        {
            "uid": "crawling_v2",
            "name": "Crawling & Indexing",
            "props": {
                "http4xx": {
                    "code": "http4xx",
                    "status": "error",
                    "name": "4XX HTTP Status Codes",
                    "value": 28
                },
                "blocked_by_noindex": {
                    "code": "blocked_by_noindex",
                    "status": "notice",
                    "name": "Blocked by noindex",
                    "value": 34
                }
            }
        }
    ],
    "score_percent": 80,
    "audit_time": "2025-07-29 11:19:33",
    "version": "2.0"
}

Get all crawled pages

GET https://api4.seranking.com/audit/{audit_id}/pages

Returns a paginated list of all URLs found during the audit. The response provides a complete sitemap as identified by the crawler, including pages with and without detected issues.

Request parameters

ParameterTypeRequiredDescription
audit_idIntegerYesUnique audit ID (path parameter).
limitIntegerNoNumber of pages to return (query parameter). Defaults to 100.
offsetIntegerNoNumber of pages to skip before starting to collect the result set (query parameter). Defaults to 0.

Request example

Copy
curl --location 'https://api4.seranking.com/audit/700183831/pages?limit=10&offset=0' \
--header 'Authorization: Token YOUR_API_KEY'

Response parameters

If successful, the server returns a JSON object containing the total number of crawled pages and an array of page objects.

ParameterTypeDescription
itemsArrayArray of objects representing individual crawled pages.
totalIntegerTotal number of pages crawled during the audit.

Each object in the items array has the following structure:

ParameterTypeDescription
idStringUnique internal identifier of the page.
urlStringFull URL of the crawled page.
statusStringHTTP status code returned by the page.
depthStringCrawl depth of the page (distance from the start page).
load_msStringPage load time in milliseconds.
titleStringContent of the title tag.
descriptionStringContent of the meta description tag.
h1StringContent of the first h1 tag.
words_countStringNumber of words found on the page.
issuesStringNumber of issues found on the page.
errorsStringNumber of errors found on the page.
warningsStringNumber of warnings found on the page.
noticesStringNumber of notices found on the page.
inlinksStringNumber of internal links pointing to the page.
outlinks_internalStringNumber of internal links found on the page.
outlinks_externalStringNumber of external links found on the page.
canonical_urlStringCanonical URL specified for the page.
indexable_statusStringIndexability status of the page.

Response example

Copy
{
"total": 1009,
"items": [
{
"id": "50958380",
"url": "[https://www.vitality.co.uk/](https://www.vitality.co.uk/)",
"url_len": "27",
"type": "doc",
"url_protocol": "https",
"sitemap": "0",
"status": "200",
"size": "156676",
"depth": "1",
"noindex": "0",
"first_ms": "35",
"load_ms": "1373",
"robots": "index, follow",
"nofollow": "0",
"xrobots": null,
"title_len": "53",
"description_len": "139",
"chars": "153843",
"h1_len": "35",
"h2_len": "16",
"html_ratio": "40",
"blocked_robots": "0",
"img": "21",
"hreflang": null,
"hreflang_link": null,
"refresh_time": null,
"meta_refresh": "0",
"redirect_url": null,
"canonical_url": "[https://www.vitality.co.uk/](https://www.vitality.co.uk/)",
"single_h1": "1",
"single_h2": "0",
"h3_count": "9",
"h4_count": "33",
"h5_count": "0",
"h6_count": "0",
"words_count": "1621",
"total_links": "230",
"mixed_count": null,
"mixed": null,
"last_modified": null,
"content_hash": "9d657683ebd385ba700d4301f1ef854f",
"title": "Vitality Insurance | Award-Winning Insurance Provider",
"description": "Vitality is a leading UK insurer offering health and life insurance. Get your quote today and unlock discounts and rewards from top brands.",
"h1": "Live longer with Vitality insurance",
"h2": "Health insurance",
"issues": "2",
"errors": "0",
"warnings": "0",
"notices": "2",
"refpages": "921",
"inlinks": "922",
"inlinks_nofollow": "0",
"inlinks_follow": "922",
"redirect_links": "4",
"redirect_count": "5",
"img_size": "700322",
"css_size": "443163",
"js_size": "543728",
"outlinks_external": "12",
"outlinks_internal": "83",
"title_duplicate": "0",
"description_duplicate": "0",
"h1_duplicate": "0",
"amp": "0",
"indexable": "1",
"indexable_status": "ok",
"traffic_forecast": "10716",
"num_keywords": "48369",
"recheck_status": null,
"time_check": "2025-07-29 11:06:30"
},
{
"id": "50958398",
"url": "[https://www.vitality.co.uk/health-insurance/](https://www.vitality.co.uk/health-insurance/)",
"url_len": "44",
"type": "doc",
"url_protocol": "https",
"sitemap": "1",
"status": "200",
"size": "181179",
"depth": "2",
"noindex": "0",
"first_ms": "0",
"load_ms": "496",
"robots": "index, follow",
"nofollow": "0",
"xrobots": null,
"title_len": "52",
"description_len": "121",
"chars": "178088",
"h1_len": "26",
"h2_len": "33",
"html_ratio": "42",
"blocked_robots": "0",
"img": "27",
"hreflang": null,
"hreflang_link": null,
"refresh_time": null,
"meta_refresh": "0",
"redirect_url": null,
"canonical_url": "[https://www.vitality.co.uk/health-insurance/](https://www.vitality.co.uk/health-insurance/)",
"single_h1": "1",
"single_h2": "0",
"h3_count": "20",
"h4_count": "39",
"h5_count": "0",
"h6_count": "0",
"words_count": "3032",
"total_links": "239",
"mixed_count": null,
"mixed": null,
"last_modified": null,
"content_hash": "5b6d17dbcb03b2405450db10f86dd43a",
"title": "Health Insurance in the UK | Get Private Health Care",
"description": "Get top-rated health insurance in the UK, with real benefits and incentives from your healthcare plan. Get a quote today.",
"h1": "Health insurance in the UK",
"h2": "What is private health insurance?",
"issues": "3",
"errors": "0",
"warnings": "1",
"notices": "2",
"refpages": "896",
"inlinks": "898",
"inlinks_nofollow": "0",
"inlinks_follow": "898",
"redirect_links": "0",
"redirect_count": "4",
"img_size": "2316745",
"css_size": "443163",
"js_size": "543728",
"outlinks_external": "12",
"outlinks_internal": "86",
"title_duplicate": "0",
"description_duplicate": "0",
"h1_duplicate": "0",
"amp": "0",
"indexable": "1",
"indexable_status": "ok",
"traffic_forecast": "4928",
"num_keywords": "13021",
"recheck_status": null,
"time_check": "2025-07-29 11:06:45"
}
]
}

Get audit pages by issue

GET https://api4.seranking.com/audit/{audit_id}/pages/issues

Retrieves a paginated list of all URLs affected by a specific issue within the audit. The issue code can be obtained from the audit report.

Request parameters

ParameterTypeRequiredDescription
audit_idIntegerYesUnique audit ID (path parameter).
codeStringYesUnique issue code (for example, title_duplicate).
limitIntegerNoNumber of URLs to return. Defaults to 100.
offsetIntegerNoNumber of URLs to skip before starting to collect the result set. Defaults to 0.

Request example

Copy
curl --location 'https://api4.seranking.com/audit/700183831/pages/issues?code=title_duplicate&limit=10&offset=0' \
--header 'Authorization: Token YOUR_API_KEY'

Response parameters

If successful, the server returns a JSON object containing the total number of affected URLs and the list of URLs.

ParameterTypeDescription
total_urlsIntegerNumber of URLs affected by the issue.
urlsArrayArray of URLs affected by the issue.
urls_typeStringFormat of the urls array. For this endpoint, it is typically simple_urls_array.

Response example

Copy
{
"total_urls": 143,
"urls": [
"https://www.vitality.co.uk/life-insurance/accident-and-fracture-cover/",
"https://www.vitality.co.uk/business/health-insurance/callback/",
"https://www.vitality.co.uk/media/vitality-employee-challenges-programme-goes-live/",
"https://www.vitality.co.uk/media/bbq-blunders-the-bbq-foods-fooling-brits/",
"https://www.vitality.co.uk/media/vitality-launches-cpd-accredited-sustainability-webinar-series-for-advisers/",
"https://www.vitality.co.uk/media/vitality-welcomes-new-partners-to-the-programme/",
"https://www.vitality.co.uk/media/sneezing-season-slams-first-time-sufferers/",
"https://www.vitality.co.uk/media/vitality-calls-for-greater-focus-on-burnout/",
"https://www.vitality.co.uk/media/vitality-research-reveals-gaps-in-employee-awareness-of-sick-leave-policies/",
"https://www.vitality.co.uk/media/vitality-parkrun-celebrate-record-breaking/"
],
"urls_type": "simple_urls_array"
}

Get all issues for URL

GET https://api4.seranking.com/audit/{audit_id}/issues

Retrieves detailed information about all issues detected on a specific page, including errors, warnings, and notices. The response also includes complete page metadata.

Request parameters

Note: Either url_id or url must be provided.
ParameterTypeRequiredDescription
audit_idIntegerYesUnique audit ID (path parameter).
url_idIntegerConditionalUnique page ID.
urlStringConditionalFull page URL.

Request example

Example with url_id:

Copy
curl --location 'https://api4.seranking.com/audit/700183831/issues?url_id=50958380' \
--header 'Authorization: Token YOUR_API_KEY'

Example with url:

Copy
curl --location 'https://api4.seranking.com/audit/700183831/issues?url=https://www.vitality.co.uk/' \
--header 'Authorization: Token YOUR_API_KEY'

Response parameters

If successful, the server returns a JSON object containing page data and issues.

ParameterTypeDescription
urlStringFull URL of the page.
page_dataObjectComplete metadata and metrics for the page.
issuesArrayArray of issue objects detected on the page.

Each object in the issues array has the following structure:

ParameterTypeDescription
codeStringUnique identifier of the issue.
typeStringIssue severity. Possible values: error, warning, notice.
groupStringIssue category.
snippetObjectDetailed information about the issue. For example, a list of redirecting URLs or an oversized CSS file.

Response example

Copy
{
"url": "https://www.vitality.co.uk/",
"page_data": {
"h1": "Live longer with Vitality insurance",
"h2": "Health insurance",
"js": 6,
"css": 1,
"doc": 83,
"img": 21,
"lang": "en",
"cache": "no-cache, no-store",
"chars": 153843,
"title": "Vitality Insurance | Award-Winning Insurance Provider",
"words": 1621,
"ext_js": 4,
"h1_len": 35,
"h2_len": 16,
"robots": "index, follow",
"ext_doc": 12,
"h1_hash": "4c57f3fc38a26dcc202c11b8975f590e",
"inlinks": 922,
"js_size": 543728,
"css_size": 443163,
"encoding": "gzip",
"h1_count": 1,
"h2_count": 14,
"h3_count": 9,
"h4_count": 33,
"img_size": 700322,
"refpages": 921,
"canonical": "https://www.vitality.co.uk/",
"title_len": 53,
"html_ratio": 40,
"time_check": "2025-07-29 11:06:30",
"title_hash": "c33af508bc32002acac1e3a12606c626",
"description": "Vitality is a leading UK insurer offering health and life insurance. Get your quote today and unlock discounts and rewards from top brands.",
"total_links": 230,
"errors_count": 0,
"issues_count": 2,
"num_keywords": 48369,
"notices_count": 2,
"redirect_count": 5,
"redirect_links": 4,
"warnings_count": 0,
"description_len": 139,
"description_hash": "3bb8e0f3905c4b7203a8b7cae91f890b",
"traffic_forecast": 10716
},
"issues": [
{
"code": "extlinks3xx",
"type": "notice",
"group": "links_v2",
"snippet": {
"type": "urls",
"value": [
{
"status": "302",
"url": "https://members.vitality.co.uk/my-points/confirm-an-activity"
},
{
"status": "302",
"url": "https://members.vitality.co.uk/"
}
]
}
},
{
"code": "css_big",
"type": "notice",
"group": "css",
"snippet": {
"type": "urls",
"value": [
{
"status": "200",
"url": "https://www.vitality.co.uk/dist/vds/css/presales.css?v=2025.6.30121236",
"size": "443163"
}
]
}
}
]
}

GET https://api4.seranking.com/audit/{audit_id}/links

Returns a paginated list of all links found during the audit. Allows for a complete analysis of internal and external links, including their status, attributes, and source pages.

Request parameters

ParameterTypeRequiredDescription
audit_idIntegerYesUnique audit ID (path parameter).
page_typeStringNoFilters links by type. Possible values: internal, external, all. Defaults to all.
filterArrayNoArray of filter objects to apply advanced filtering conditions (see filter object below).
limitIntegerNoNumber of links to return.
offsetIntegerNoNumber of links to skip before starting to return results.

filter object

To build complex queries, add an array of filter parameters to the URL query string. This allows you to chain multiple conditions together using logical operators. Each filter consists of three parts, formatted with an index in brackets (e.g., filter[0], filter[1]).

ParameterTypeRequiredDescription
paramStringYesLink field to filter by. Possible values: status, type, source_noindex, nofollow, anchor_type.
valueStringYesValue to match.
typeStringNoLogical operator used to combine conditions. Possible values: and, or. Required starting from the second filter condition.
Example 1: OR Logic

To find all internal links that have a status code of either 301 OR 302:

Copy
curl --location 'https://api4.seranking.com/audit/700183831/links?page_type=internal&limit=10&filter[0][param]=status&filter[0][value]=301&filter[1][param]=status&filter[1][value]=302&filter[1][type]=or' \
--header 'Authorization: Token YOUR_API_KEY'
  • filter[0] sets the base condition (status = 301).
  • filter[1][type]=or explicitly connects the next condition (status = 302) with an OR.
Example 2: AND Logic

To find all broken (404) image links (anchor_type = image).

Copy
curl --location 'https://api4.seranking.com/audit/700183831/links?page_type=internal&limit=10&filter[0][param]=status&filter[0][value]=404&filter[1][param]=anchor_type&filter[1][value]=image&filter[1][type]=and' \
--header 'Authorization: Token YOUR_API_KEY'
  • filter[0] sets the base condition (status = 404).
  • filter[1][type]=and must be included to connect the second condition (anchor_type = image) with an AND. Omitting it would result in an error.

Request example

Example without filters:

Copy
curl --location 'https://api4.seranking.com/audit/700183831/links?page_type=all&limit=4&offset=0' \
--header 'Authorization: Token YOUR_API_KEY'

Example with filters:

Copy
curl --location 'https://api4.seranking.com/audit/700183831/links?page_type=internal&limit=10&filter[0][param]=status&filter[0][value]=404&filter[1][param]=anchor_type&filter[1][value]=image&filter[1][type]=and' \
--header 'Authorization: Token YOUR_API_KEY'

Response parameters

If successful, the server returns the 200 HTTP status code and an object containing the total number of matching links and a list of link objects. Returns HTTP 404 if the audit is not found (for more information, see Error handling).

ParameterTypeDescription
totalIntegerTotal number of links matching the request criteria.
itemsArrayArray of link objects.

Each object in the items array has the following structure:

ParameterTypeDescription
urlStringDestination URL.
idStringUnique link identifier.
statusStringHTTP status code of the destination URL.
typeStringLink type (for example, hyperlink or canonical).
source_urlStringURL of the page where the link was found.
source_noindexStringIndicates whether the source page has a noindex directive (1 –yes, 0 – no).
nofollowStringIndicates whether the link has a nofollow attribute (1 –yes, 0 – no).
anchorStringVisible anchor text of the link.
anchor_typeStringAnchor type (for example, text or image).
altStringAlt attribute of the link, if available.
titleStringTitle attribute of the link, if available.

Response example

Copy
{
"total": 103624,
"items": [
{
"url": "[https://www.vitality.co.uk/](https://www.vitality.co.uk/)",
"id": "1153787496",
"status": "200",
"type": "hyperlink",
"source_url": "[https://www.vitality.co.uk/advisers/](https://www.vitality.co.uk/advisers/)",
"source_noindex": "1",
"nofollow": "0",
"alt": "",
"anchor_type": "text",
"anchor": "Personal",
"title": ""
},
{
"url": "[https://www.vitality.co.uk/](https://www.vitality.co.uk/)",
"id": "1153787624",
"status": "200",
"type": "hyperlink",
"source_url": "[https://www.vitality.co.uk/business/](https://www.vitality.co.uk/business/)",
"source_noindex": "0",
"nofollow": "0",
"alt": "",
"anchor_type": "text",
"anchor": "Personal",
"title": ""
},
{
"url": "[https://www.vitality.co.uk/](https://www.vitality.co.uk/)",
"id": "1153787774",
"status": "200",
"type": "hyperlink",
"source_url": "[https://www.vitality.co.uk/community/](https://www.vitality.co.uk/community/)",
"source_noindex": "0",
"nofollow": "0",
"alt": "",
"anchor_type": "text",
"anchor": "Personal",
"title": ""
},
{
"url": "[https://www.vitality.co.uk/](https://www.vitality.co.uk/)",
"id": "1153787908",
"status": "200",
"type": "hyperlink",
"source_url": "[https://www.vitality.co.uk/healthcare-providers/](https://www.vitality.co.uk/healthcare-providers/)",
"source_noindex": "0",
"nofollow": "0",
"alt": "",
"anchor_type": "text",
"anchor": "Personal",
"title": ""
}
]
}

Get audit history

GET https://api4.seranking.com/audit/{audit_id}/history

Retrieves historical data for a specific audit run, including audit settings, domain metrics, and issue summaries.

Request parameters

ParameterTypeRequiredDescription
audit_idIntegerYesUnique audit ID (path parameter).
dateStringYesThe specific date of the historical audit to retrieve (YYYY-MM-DD).

Request example

Copy
curl --location 'https://api4.seranking.com/audit/700183831/history?date=2025-07-29' \
--header 'Authorization: Token YOUR_API_KEY'

Response parameters

If successful, the server returns the 200 HTTP status code and an object containing historical audit data. Returns HTTP 404 if the audit or specified date is not found (for more information, see Error handling).

ParameterTypeDescription
audit_timeStringDate and time when the audit was completed.
domain_dataObjectDomain metrics at the time of the audit.
settingsObjectAudit configuration used for this historical run.
pages_dataObjectNumber of affected pages grouped by issue code.
totalsObjectSummary statistics of the audit results.
versionStringAudit engine version.

domain_data object

ParameterTypeDescription
domainStringAudited domain.
backlinksStringNumber of backlinks.
index_googleStringNumber of pages indexed by Google.
dtIntegerDomain trust score.

totals object

ParameterTypeDescription
total_pagesIntegerTotal number of audited pages.
total_warningsIntegerTotal number of warnings found.
total_errorsIntegerTotal number of errors found.
total_passedIntegerTotal number of passed checks.

Response example

Copy
{
    "audit_time": "2025-07-29 11:19:33",
    "domain_data": {
        "dt": 44,
        "domain": "www.vitality.co.uk",
        "backlinks": "212249",
        "index_google": "1380"
    },
    "settings": {
        "source_site": 1,
        "source_sitemap": 1,
        "max_pages": 1000,
        "max_depth": 10
    },
    "pages_data": {
        "css3xx": 1,
        "css_big": 880,
        "h1_long": 19,
        "http4xx": 28,
        "title_duplicate": 143,
        "description_duplicate": 169
    },
    "totals": {
        "total_pages": 1009,
        "total_warnings": 979,
        "total_errors": 346,
        "total_passed": 77
    },
    "version": "2.0"
}

Update audit title

POST https://api4.seranking.com/audit/{audit_id}/update

Updates the title of an existing website audit report.

Request parameters

ParameterTypeRequiredDescription
audit_idIntegerYesUnique audit ID (path parameter).
titleStringYesNew title for the audit report. Maximum length is 300 characters.

Request example

Copy
curl --location --request POST 'https://api4.seranking.com/audit/700183831/update' \
--header 'Content-Type: application/json' \
--header 'Authorization: Token YOUR_API_KEY' \
--data '{
    "title": "New Example Audit Title"
}'

Response parameters

If successful, the server returns the 200 HTTP status code with an empty response body. Returns HTTP 404 if the audit is not found (for more information, see Error handling).

Response example

No response body.


Delete audit

POST https://api4.seranking.com/audit/{audit_id}/delete

Permanently deletes the specified website audit report and all associated data. This action can’t be undone.

Request parameters

ParameterTypeRequiredDescription
audit_idIntegerYesUnique audit ID (path parameter).

Request example

Copy
curl --location --request POST 'https://api4.seranking.com/audit/700183831/delete' \
--header 'Authorization: Token YOUR_API_KEY'

Response parameters

If successful, the server returns the 200 HTTP status code and an empty response body. Returns HTTP 404 if the audit is not found (for more information, see Error handling).

Response example

No response body.


Recheck audit

POST https://api4.seranking.com/audit/{audit_id}/recheck

Re-runs the audit using the same settings. This allows you to track changes and verify that issues have been resolved.

Note: Rechecking an audit consumes the same credits as creating a new audit.

Request parameters

ParameterTypeRequiredDescription
audit_idIntegerYesUnique audit ID (path parameter).

Request example

Copy
curl --location --request POST 'https://api4.seranking.com/audit/700183831/recheck' \
--header 'Authorization: Token YOUR_API_KEY'

Response parameters

If successful, the server returns the 200 HTTP status code with an empty response body. Returns HTTP 404 if the audit is not found (for more information, see Error handling).

Response example

No response body.

Learn how SE Ranking’s API can boost your SEO!

Hi! Meet our product expert, Alex.

He’ll walk you through the API and show you how to get the most out of it.

  • Enjoy a tailored demo on integrating rich, structured SEO data into your stack.
  • Pin down every tech detail live—auth, endpoints, rate limits, data formats.
  • Compare usage tiers and pricing so you can unlock maximum data value.

Request a free demo to see our tools and integrations in action

By clicking this button, you agree to SE Ranking’s Terms of Services and Privacy Policy.