Website Audit
The Website Audit API crawls sites on demand and surfaces technical SEO issues: broken links, missing tags, slow pages, indexability problems, and more. Results are retrieved on demand.
Plan limits apply to the total number of pages crawled. Creating an audit and rechecking an audit both count crawled pages against that plan limit. All other operations (reads and configuration updates) are free.
Create audit
POST https://api.seranking.com/v1/project-management/audits
Creates a website audit that crawls the HTML of a target site. Suitable for static and server-side-rendered sites. Enable csr in settings for JavaScript-rendered pages.
Request parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| domain | String | Yes | Domain to be audited (e.g., domain.com). |
| title | String | No | Custom title of the audit report (max 300 characters). Defaults to domain. |
| settings | Object | No | Audit configuration settings. Only include parameters you want to override (see settings object below). |
Request example
curl --location 'https://api.seranking.com/v1/project-management/audits' \
--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.
| Parameter | Type | Description |
|---|---|---|
| id | Integer | Unique identifier of the audit report. |
Response example
{
"id": 700237036
}
List audits
GET https://api.seranking.com/v1/project-management/audits
Returns all audits associated with the account, with pagination and filtering.
Request parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| limit | Integer | No | Number of audits to return. Defaults to 100. |
| offset | Integer | No | Number of audits to skip before starting to collect the result set. Defaults to 0. |
| search | String | No | Filters audits by matching title or URL. |
| date_start | String | No | Start date for filtering audits (in YYYY-MM-DD). |
| date_end | String | No | End date for filtering audits (in YYYY-MM-DD). |
Request example
curl --location 'https://api.seranking.com/v1/project-management/audits?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.
| Parameter | Type | Description |
|---|---|---|
| total | Integer | Number of audits matching the filter criteria. |
| items | Array | Array of audit objects. |
Each object in the items array has the following structure:
| Parameter | Type | Description |
|---|---|---|
| id | Integer | Unique identifier of the audit report. |
| group_id | Integer | Audit group identifier. |
| url | String | URL of the audited website. |
| title | String | Title of the audit report. |
| has_project | Boolean | Indicates whether the audit is linked to a project. |
| site_id | Integer | Internal site identifier. |
| last_update | String | Date of last audit update ( in YYYY-MM-DD). |
| status | String | Current audit status (for example, finished, processing). |
| error | String | Error message if the audit failed, otherwise null. |
| error_params | Object | Error details if available. |
| stats | Object | Latest audit statistics. |
| prev_stats | Object | Statistics from the previous audit run (can be null). |
| version | String | Audit engine version. |
| owner_account_id | Integer | Owner account identifier. |
| is_new | Integer | Indicates whether the audit is newly created (1 – yes, 0 – no). |
Response example
{
"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://api.seranking.com/v1/project-management/audits/status
Returns the real-time status of a specific audit. Useful for monitoring crawl progress before fetching the full report.
Request parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| audit_id | Integer | Yes | Unique audit ID (path parameter). |
Request example
curl --location 'https://api.seranking.com/v1/project-management/audits/status?audit_id=123' \
--header 'Authorization: Token YOUR_API_KEY'
Response parameters
If successful, the server returns a JSON object containing the current audit status and key metrics.
| Parameter | Type | Description |
|---|---|---|
| status | String | Current audit status. Possible values: queued, processing, finished, cancelled, expired. |
| total_pages | Integer | Number of pages crawled. |
| total_errors | Integer | Number of errors found. |
| total_warnings | Integer | Number of warnings found. |
| total_passed | Integer | Number of passed checks. |
| start_time | String | Audit start timestamp. |
| audit_time | String | Audit completion timestamp. Present if the audit is finished. |
Response example
{
"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://api.seranking.com/v1/project-management/audits/report
Returns a complete audit report, including health score, domain properties, and issues.
Request parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| audit_id | Integer | Yes | Unique audit ID (path parameter). |
Request example
curl --location 'https://api.seranking.com/v1/project-management/audits/report?audit_id=123' \
--header 'Authorization: Token YOUR_API_KEY'
Response parameters
If successful, the server returns a JSON object containing the complete audit report.
| Parameter | Type | Description |
|---|---|---|
| is_finished | Boolean | Indicates whether the audit is completed. |
| score_percent | Integer | Overall website health score (0–100). |
| total_pages | Integer | Number of pages crawled. |
| total_errors | Integer | Number of errors found. |
| total_warnings | Integer | Number of warnings found. |
| total_notices | Integer | Number of notices found. |
| total_passed | Integer | Number of passed checks. |
| audit_time | String | Audit completion timestamp. |
| domain_props | Object | Domain properties and metadata (see domain_props object below). |
| sections | Array | An array of objects, where each object represents a category of audit checks (see sections array below). |
domain_props object
| Parameter | Type | Description |
|---|---|---|
| dt | Integer | Domain trust score. |
| domain | String | Domain name. |
| domains | String | Number of referring domains. |
| expdate | String | Expiration date of domain registration. |
| updated | String | Last update timestamp. |
| backlinks | String | Number of backlinks pointing to the domain. |
| index_google | String | Number of pages indexed in Google. |
| all_checked | Boolean | Indicates whether all domain checks are completed. |
sections array
| Parameter | Type | Description |
|---|---|---|
| uid | String | Section identifier. |
| name | String | Section name. |
| props | Object | Section 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:
| Parameter | Type | Description |
|---|---|---|
| code | String | Unique check identifier. |
| status | String | Check result. Possible values: error, warning, notice, passed. |
| name | String | Check name. |
| value | Integer | Number of affected pages. |
Response example
{
"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"
}
Recheck audit
POST https://api.seranking.com/v1/project-management/audits/recheck
Re-runs the audit using the same settings. This allows you to track changes and verify that issues have been resolved.
Request parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| audit_id | Integer | Yes | Unique audit ID (path parameter). |
Request example
curl --location --request POST 'https://api.seranking.com/v1/project-management/audits/recheck?audit_id=123' \
--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.
Delete audit
DELETE https://api.seranking.com/v1/project-management/audits
Permanently deletes the specified website audit report and all associated data. This action can’t be undone.
Request parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| audit_id | Integer | Yes | Unique audit ID (path parameter). |
Request example
curl --location --request DELETE 'https://api.seranking.com/v1/project-management/audits?audit_id=123' \
--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.
Get audit settings
GET https://api.seranking.com/v1/project-management/audits/settings
Returns the full saved configuration for an audit: crawl sources, limits, thresholds, schedule, notification recipients, disabled issue codes, external URL ignore list, and engine version.
Call this before updateAuditSettings for partial updates, especially when modifying disabled_issues or schedule_wdays (both are replace operations).
Request parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| audit_id | Integer | Yes | Unique audit ID (path parameter). |
Request example
curl --location --request POST 'https://api.seranking.com/v1/project-management/audits/settings?audit_id=123' \
--header 'Authorization: Token YOUR_API_KEY'
Response parameters
Response fields match the Audit settings object. The API returns every field with its current value.
Response example
{
"source_site": 1,
"source_sitemap": 1,
"source_subdomain": 0,
"source_file": 0,
"check_robots": 1,
"ignore_noindex": 0,
"ignore_nofollow": 0,
"ignore_params": 0,
"user_agent": 0,
"csr": 0,
"max_pages": 1000,
"max_depth": 10,
"max_req": 500,
"max_redirects": 5,
"max_size": 3000,
"min_title_len": 20,
"max_title_len": 65,
"min_description_len": 1,
"max_description_len": 158,
"min_words": 250,
"max_h1_len": 100,
"max_h2_len": 100,
"schedule_type": "manual",
"schedule_hour": 0,
"schedule_repeat": 0,
"send_report": 1,
"disabled_issues": ["slow_loading", "speed_index"],
"disallow_ext": "cdn.example.com\nhttps://tracking.example.com/pixel",
"version": "2.0"
}Update audit settings
PATCH https://api.seranking.com/v1/project-management/audits/settings
Updates the configuration of an existing audit. Applies partial-update (merge) semantics: only the fields in the request body change.
disabled_issues and schedule_wdays are REPLACE operations. The array you send replaces the full saved list. Fetch the current values with getAuditSettings before modifying them.Sitemaps and custom page lists have their own endpoints. See addAuditSitemap and addAuditSourcePages. Updating only the audit title has a dedicated endpoint. See updateAuditTitle.
Request parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| audit_id | Integer | Yes | Unique audit ID (path parameter). |
| audit_id | Object | No | Fields to change. See Audit settings object. |
Request example
curl --location --globoff --request PATCH 'https://api.seranking.com/v1/project-management/audits/settings?audit_id={audit_id}' \
--header 'Content-Type: application/json' \
--header 'Authorization: Token YOUR_API_KEY' \
--data '{
"settings": {
"max_pages": 50000,
"max_depth": 20,
"schedule_type": "week",
"schedule_wdays": [1, 3, 5],
"disabled_issues": ["slow_loading"],
"disallow_ext": "cdn.example.com\nhttps://tracking.example.com/pixel"
}
}'
Response
HTTP 200 OK with an empty body.
Reset audit settings
POST https://api.seranking.com/v1/project-management/audits/settings/reset
Restores every setting to its default value, including crawl sources, limits, thresholds, schedule, notifications, disabled_issues, and disallow_ext.
deleteAuditSitemap or deleteAuditSourcePages if needed.Request parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| audit_id | Integer | Yes | Unique audit ID (path parameter). |
Request example
curl --location --globoff --request PATCH 'https://api.seranking.com/v1/project-management/audits/settings/reset?audit_id={audit_id}' \
--header 'Authorization: Token YOUR_API_KEY'
Response
HTTP 200 OK with an empty body.
Update audit title
PATCH https://api.seranking.com/v1/project-management/audits
Updates the title of an existing website audit report.
Request parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| audit_id | Integer | Yes | Unique audit ID (path parameter). |
| title | String | Yes | New title for the audit report. Maximum length is 300 characters. |
Request example
curl --location --request PATCH 'https://api.seranking.com/v1/project-management/audits?audit_id=123' \
--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.
Get all crawled pages
GET https://api.seranking.com/v1/project-management/audits/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
| Parameter | Type | Required | Description |
|---|---|---|---|
| audit_id | Integer | Yes | Unique audit ID (path parameter). |
| limit | Integer | No | Number of pages to return (query parameter). Defaults to 100. |
| offset | Integer | No | Number of pages to skip before starting to collect the result set (query parameter). Defaults to 0. |
Request example
curl --location 'https://api.seranking.com/v1/project-management/audits/pages?audit_id=123&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.
| Parameter | Type | Description |
|---|---|---|
| items | Array | Array of objects representing individual crawled pages. |
| total | Integer | Total number of pages crawled during the audit. |
Each object in the items array has the following structure:
| Parameter | Type | Description |
|---|---|---|
| id | String | Unique internal identifier of the page. |
| url | String | Full URL of the crawled page. |
| status | String | HTTP status code returned by the page. |
| depth | String | Crawl depth of the page (distance from the start page). |
| load_ms | String | Page load time in milliseconds. |
| title | String | Content of the title tag. |
| description | String | Content of the meta description tag. |
| h1 | String | Content of the first h1 tag. |
| words_count | String | Number of words found on the page. |
| issues | String | Number of issues found on the page. |
| errors | String | Number of errors found on the page. |
| warnings | String | Number of warnings found on the page. |
| notices | String | Number of notices found on the page. |
| inlinks | String | Number of internal links pointing to the page. |
| outlinks_internal | String | Number of internal links found on the page. |
| outlinks_external | String | Number of external links found on the page. |
| canonical_url | String | Canonical URL specified for the page. |
| indexable_status | String | Indexability status of the page. |
Response example
{
"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://api.seranking.com/v1/project-management/audits/issue-pages
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
| Parameter | Type | Required | Description |
|---|---|---|---|
| audit_id | Integer | Yes | Unique audit ID (path parameter). |
| code | String | Yes | Unique issue code (for example, title_duplicate). |
| limit | Integer | No | Number of URLs to return. Defaults to 100. |
| offset | Integer | No | Number of URLs to skip before starting to collect the result set. Defaults to 0. |
Request example
curl --location 'https://api.seranking.com/v1/project-management/audits/issue-pages?audit_id=123&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.
| Parameter | Type | Description |
|---|---|---|
| total_urls | Integer | Number of URLs affected by the issue. |
| urls | Array | Array of URLs affected by the issue. |
| urls_type | String | Format of the urls array. For this endpoint, it is typically simple_urls_array. |
Response example
{
"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 issues by URL
GET https://api.seranking.com/v1/project-management/audits/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
url_id or url must be provided.| Parameter | Type | Required | Description |
|---|---|---|---|
| audit_id | Integer | Yes | Unique audit ID (path parameter). |
| url_id | Integer | Conditional | Unique page ID. |
| url | String | Conditional | Full page URL. |
Request example
Example with url_id:
curl --location 'https://api.seranking.com/v1/project-management/audits/issues?audit_id=123&url_id=50958380' \
--header 'Authorization: Token YOUR_API_KEY'
Example with url:
curl --location 'https://api.seranking.com/v1/project-management/audits/issues?audit_id=123&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.
| Parameter | Type | Description |
|---|---|---|
| url | String | Full URL of the page. |
| page_data | Object | Complete metadata and metrics for the page. |
| issues | Array | Array of issue objects detected on the page. |
Each object in the issues array has the following structure:
| Parameter | Type | Description |
|---|---|---|
| code | String | Unique identifier of the issue. |
| type | String | Issue severity. Possible values: error, warning, notice. |
| group | String | Issue category. |
| snippet | Object | Detailed information about the issue. For example, a list of redirecting URLs or an oversized CSS file. |
Response example
{
"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 found links
GET https://api.seranking.com/v1/project-management/audits/found-links
Returns every hyperlink found across the site. Supports filter chains for advanced queries (e.g., all nofollow external links returning 4xx).
Request parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| audit_id | Integer | Yes | Unique audit ID (path parameter). |
| page_type | Object | No | Fields to change. See Audit settings object. |
| limit | Integer | No | Number of links to return. |
| offset | Integer | No | Starting position for pagination. |
| filter | Array | No | Filter chain. Each entry is { param, value, type? }. See below. |
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]).
| Parameter | Type | Required | Description |
|---|---|---|---|
| param | String | Yes | Link field to filter by. Possible values: status, type, source_noindex, nofollow, anchor_type. |
| value | String | Yes | Value to match. |
| type | String | No | Logical 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:
curl --location 'https://api.seranking.com/v1/project-management/audits/issue-pages?audit_id=123&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]=orexplicitly connects the next condition (status = 302) with an OR.
Example 2: AND Logic
To find all broken (404) image links (anchor_type = image).
curl --location 'https://api.seranking.com/v1/project-management/audits/issue-pages?audit_id=123&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]=andmust 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:
curl --location 'https://api.seranking.com/v1/project-management/audits/issue-pages?audit_id=123&page_type=all&limit=4&offset=0' \
--header 'Authorization: Token YOUR_API_KEY'
Example with filters:
curl --location 'https://api.seranking.com/v1/project-management/audits/issue-pages?audit_id=123&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).
| Parameter | Type | Description |
|---|---|---|
| total | Integer | Total number of links matching the request criteria. |
| items | Array | Array of link objects. |
Each object in the items array has the following structure:
| Parameter | Type | Description |
|---|---|---|
| url | String | Destination URL. |
| id | String | Unique link identifier. |
| status | String | HTTP status code of the destination URL. |
| type | String | Link type (for example, hyperlink or canonical). |
| source_url | String | URL of the page where the link was found. |
| source_noindex | String | Indicates whether the source page has a noindex directive (1 –yes, 0 – no). |
| nofollow | String | Indicates whether the link has a nofollow attribute (1 –yes, 0 – no). |
| anchor | String | Visible anchor text of the link. |
| anchor_type | String | Anchor type (for example, text or image). |
| alt | String | Alt attribute of the link, if available. |
| title | String | Title attribute of the link, if available. |
Response example
{
"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://api.seranking.com/v1/project-management/audits/history
Retrieves historical data for a specific audit run, including audit settings, domain metrics, and issue summaries.
Request parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| audit_id | Integer | Yes | Unique audit ID (path parameter). |
| date | String | Yes | The specific date of the historical audit to retrieve (YYYY-MM-DD). |
Request example
curl --location 'https://api.seranking.com/v1/project-management/audits/history?audit_id=123&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).
| Parameter | Type | Description |
|---|---|---|
| audit_time | String | Date and time when the audit was completed. |
| domain_data | Object | Domain metrics at the time of the audit. |
| settings | Object | Audit configuration used for this historical run. |
| pages_data | Object | Number of affected pages grouped by issue code. |
| totals | Object | Summary statistics of the audit results. |
| version | String | Audit engine version. |
domain_data object
| Parameter | Type | Description |
|---|---|---|
| domain | String | Audited domain. |
| backlinks | String | Number of backlinks. |
| index_google | String | Number of pages indexed by Google. |
| dt | Integer | Domain trust score. |
totals object
| Parameter | Type | Description |
|---|---|---|
| total_pages | Integer | Total number of audited pages. |
| total_warnings | Integer | Total number of warnings found. |
| total_errors | Integer | Total number of errors found. |
| total_passed | Integer | Total number of passed checks. |
Response example
{
"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"
}
List audit sitemaps
GET https://api.seranking.com/v1/project-management/audits/sitemaps
Returns every sitemap configured as a crawl source for an audit, with per-sitemap page counts. Sitemaps are only used when settings.source_sitemap is 1. The flag auto-enables when a sitemap is added.
Request parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| audit_id | Integer | Yes | Unique audit ID (path parameter). |
Request example
curl --location --request GET 'https://api.seranking.com/v1/project-management/audits/sitemaps?audit_id=123' \
--header 'Authorization: Token YOUR_API_KEY'
Response parameters
| Parameter | Type | Description |
|---|---|---|
items | Array | Source-pages list records. |
items[].id | Integer | List identifier. Use in deleteAuditSourcePages. |
items[].name | String | Uploaded filename. |
items[].pages_count | Integer | URLs contained in the list. |
Response example
{
"items": [
{
"id": 8421,
"url": "https://example.com/sitemap.xml",
"pages_count": 1820
}
]
}
Add audit sitemap
POST https://api.seranking.com/v1/project-management/audits/sitemaps
Registers a sitemap URL as a crawl source. Auto-sets settings.source_sitemap to 1 so the next run uses it.
Request parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| audit_id | Integer | Yes | Unique audit ID (path parameter). |
| url | String | Yes | Absolute sitemap URL (e.g., https://example.com/sitemap.xml). |
Request example
curl --location --request POST 'https://api.seranking.com/v1/project-management/audits/sitemaps?audit_id=123' \
--header 'Authorization: Token YOUR_API_KEY' \
--data '{
"url": "https://example.com/sitemap.xml"
}'
Response parameters
| Parameter | Type | Description |
|---|---|---|
id | Integer | New sitemap identifier. |
Response example
{
"id": 8421
}
Delete audit source pages
DELETE https://api.seranking.com/v1/project-management/audits/sitemaps
Removes a sitemap from an audit’s crawl sources. Does not toggle settings.source_sitemap off. Use updateAuditSettings if you want to disable sitemap crawling entirely.
Request parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| audit_id | Integer | Yes | Unique audit ID (path parameter). |
| sitemap_id | Integer | Yes | Sitemap identified from List Audit Sitemaps. |
Request example
curl --location --request DELETE 'https://api.seranking.com/v1/project-management/audits/sitemaps?audit_id=123&sitemap_id=456' \
--header 'Authorization: Token YOUR_API_KEY'
Response
HTTP 204 No Content on success.
List audit source pages
GET https://api.seranking.com/v1/project-management/audits/source_pages
Returns every uploaded custom page list used as a crawl source. Source-pages lists are only used when settings.source_file is 1. The flag auto-enables when a list is added.
Request parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| audit_id | Integer | Yes | Unique audit ID (path parameter). |
Request example
curl --location --request GET 'https://api.seranking.com/v1/project-management/audits/source_pages?audit_id=123' \
--header 'Authorization: Token YOUR_API_KEY'
Response parameters
| Parameter | Type | Description |
|---|---|---|
items | Array | Source-pages list records. |
items[].id | Integer | List identifier. Use in deleteAuditSourcePages. |
items[].name | String | Uploaded filename. |
items[].pages_count | Integer | URLs contained in the list. |
Response example
{
"items": [
{
"id": 1732,
"name": "priority-pages.txt",
"pages_count": 240
}
]
}
Add audit source pages
POST https://api.seranking.com/v1/project-management/audits/source_pages
Uploads a custom list of URLs to crawl. The list is submitted as a multipart text file with one URL per line. Auto-sets settings.source_file to 1.
Request parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| audit_id | Integer | Yes | Unique audit ID (path parameter). |
| file | String | Yes | UTF-8 text file with one URL per line. |
Request example
curl --location --request POST 'https://api.seranking.com/v1/project-management/audits/source_pages?audit_id=123' \
--header 'Authorization: Token YOUR_API_KEY' \
-F "[email protected]"
Response parameters
| Parameter | Type | Description |
|---|---|---|
id | Integer | New source-pages list identifier. |
Response example
{
"id": 1732
}
Delete audit source pages
DELETE https://api.seranking.com/v1/project-management/audits/source_pages
Removes an uploaded custom page list. Does not toggle settings.source_file off. Use updateAuditSettings to disable custom-list crawling entirely.
Request parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| audit_id | Integer | Yes | Unique audit ID (path parameter). |
| list_id | String | Yes | List identifier from List Audit Source Pages. |
Request example
curl --location --request DELETE 'https://api.seranking.com/v1/project-management/audits/source_pages?audit_id=123&list_id=789' \
--header 'Authorization: Token YOUR_API_KEY'
Response
HTTP 204 No Content on success.
Audit settings object
Used by createAudit, updateAuditSettings, getAuditSettings, and getAuditHistory. Every field is optional. Send only the fields to change; other values stay untouched (exceptions are called out below).
Crawl sources
| Parameter | Type | Description |
|---|---|---|
| source_site | Integer | Scan 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_sitemap | Integer | Scan pages from the sitemap.xml file (1 – yes, 0 – no). Defaults to 1. |
| source_subdomain | Integer | Scan subdomains (1 – yes, 0 – no). If 0, subdomain links are treated as external. Defaults to 0. |
| source_file | Integer | Scan only URLs from a custom list (1 – yes, 0 – no). Defaults to 0. |
Crawl behavior
| Parameter | Type | Description |
|---|---|---|
| check_robots | Integer | Follow robots.txt directives (1 – yes, 0 – no). Defaults to 1. |
| ignore_noindex | Integer | Ignore pages with a noindex tag (1 – yes, 0 – no). Defaults to 0. |
| ignore_nofollow | Integer | Ignore links with a nofollow attribute (1 – yes, 0 – no). Defaults to 0. |
| ignore_params | Integer | Ignore URL parameters (0 – none, 1 – all, 2 – custom list). Defaults to 0. |
| custom_params | String | Custom 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_agent | Integer | User-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 |
| csr | Integer | Enable JavaScript rendering (1 – enabled, 0 – disabled). Defaults to 0.Essential for SPAs and sites with dynamically loaded content. |
| csr_delay | Integer | Delay in milliseconds before capturing the rendered page when csr is 1. Range 0–6,000. |
| login | String | Username for Basic HTTP Authentication. Defaults to null. |
| password | String | Password for Basic HTTP Authentication. Defaults to null. |
Crawl limits
| Parameter | Type | Description |
|---|---|---|
| max_pages | Integer | Maximum number of pages to crawl (1–300,000). Defaults to 1000. |
| max_depth | Integer | Maximum crawl depth (1–100). Defaults to 10. |
| max_req | Integer | Maximum number of requests per second (1–500). Defaults to 500. |
| max_redirects | Integer | Maximum number of redirects to follow (1–50). Defaults to 5. |
| max_size | Integer | Maximum page size in kilobytes (1–100,000). Defaults to 3000. |
On-page thresholds
| Parameter | Type | Description |
|---|---|---|
| min_title_len | Integer | Minimum title length (1–10,000). Defaults to 20. |
| max_title_len | Integer | Maximum title length (1–10,000). Defaults to 65. |
| min_description_len | Integer | Minimum meta description length (1–10,000). Defaults to 1. |
| max_description_len | Integer | Maximum meta description length (1–10,000). Defaults to 158. |
| min_words | Integer | Minimum word count per page (1–10,000). Defaults to 250. |
| max_h1_len | Integer | Maximum H1 length (1–10,000). Defaults to 100. |
| max_h2_len | Integer | Maximum H2 length (1–10,000). Defaults to 100. |
URL filtering
| Parameter | Type | Description |
|---|---|---|
| allow | String | Crawl only URLs that start with the specified path. Defaults to null. |
| disallow | String | Exclude URLs that start with the specified path. Defaults to null. |
| disallow_ext | String | External URLs or domains to ignore when checking outbound links. Newline-separated. REPLACE operation. |
| hide | String | Hide URLs and resources that start with the specified path. Defaults to null. |
Issue management
| Parameter | Type | Description |
|---|---|---|
| disaled_issues | Array | Issue codes to disable (e.g., ["slow_loading", "speed_index"]). REPLACE operation: the array sent replaces the full list. Read the current list with getAuditSettings first. Issue codes match those in getAuditReport. |
Scheduling
| Parameter | Type | Description |
|---|---|---|
| schedule_type | String | Audit execution frequency. Possible values: manual, week, month. Defaults to manual. |
| schedule_day | Integer | Day of month for the scheduled audit when schedule_type is month (1-31). Defaults to 1. |
| schedule_wday | Integer | Single day of the week (1–7, Monday–Sunday) when schedule_type is week. Legacy; prefer schedule_wdays. |
| schedule_wdays | Array | Days of week for the scheduled audit when schedule_type is week (array of integers 1-7). Defaults to []. |
| schedule_hour | Integer | Hour of day (UTC) for the scheduled audit (0-23). Defaults to 0. |
| schedule_repeat | Integer | Enable repeated audits (1 – yes, 0 – no). Defaults to 0. |
| schedule_repeat_interval | Integer | Interval in weeks between repeated audits (when schedule_repeat is 1). Defaults to 2. |
Reporting
| Parameter | Type | Description |
|---|---|---|
| send_report | Integer | Send the audit report via email (1 – yes, 0 – no). Defaults to 1. |
| report_emails | String | Email addresses to receive the audit report. If empty "", the report is sent to the account owner. |
