Website audit
The Website Audit API provides a comprehensive suite of tools to programmatically manage the full lifecycle of your technical SEO audits. These endpoints allow you to launch new crawls, monitor their progress, and retrieve detailed reports and page-level data.
Create audit
There are two endpoints for launching a new website audit. Use the Standard endpoint for most websites, and the Advanced endpoint for sites that rely heavily on JavaScript to render content, such as Single-Page Applications (SPAs).
Create standard audit
Cost: 2 credits per crawled page
Launches a standard audit that crawls the HTML of a website. This is suitable for most static and server-side rendered sites.
Create advanced audit
Cost: 20 credits per crawled page
Launches an advanced audit that renders JavaScript before analyzing the page. Use this for single-page applications (SPAs) or any site where content is loaded dynamically.
Request parameters
| Parameter | Type | Required | Default | Description | 
|---|---|---|---|---|
| domain | String | Yes | N/A | Domain to be audited (e.g., domain.com). | 
| title | String | No | domain | Custom title for the audit report. Maximum 300 characters. | 
| settings | Object | No | N/A | Object containing specific audit settings. Only include parameters you want to override. See the Audit settings table below. | 
Audit settings
The settings object allows for detailed customization of the website crawl. All parameters are optional and apply to both audit types.
| Parameter | Default | Possible values | Description | 
|---|---|---|---|
| source_site | 1 | 1 (yes), 0 (no) | Scan all pages by following internal links from the homepage. If 0, scans only from the sitemap or a provided list. | 
| source_sitemap | 1 | 1 (yes), 0 (no) | Scan the sitemap.xml file. | 
| source_subdomain | 0 | 1 (yes), 0 (no) | Scan subdomains. If 0, subdomain links are treated as external. | 
| source_file | 0 | 1 (yes), 0 (no) | Use a custom list of pages for the audit. | 
| check_robots | 1 | 1 (yes), 0 (no) | Follow the directives in the robots.txt file. | 
| ignore_params | 0 | 0 (none), 1 (all), 2 (custom list) | Ignore URL parameters. | 
| custom_params | utm_source, utm_medium, … | Comma-separated string | List of URL parameters to ignore when ignore_params is 2. | 
| ignore_noindex | 0 | 1 (yes), 0 (no) | Ignore pages with a noindex tag. | 
| ignore_nofollow | 0 | 1 (yes), 0 (no) | Ignore links with a nofollow attribute. | 
| user_agent | 0 | 0: SE Ranking bot (Default) 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 | The User-Agent header to use for the crawl. | 
| login | null | String | Login for basic HTTP authentication. | 
| password | null | String | Password for basic HTTP authentication. | 
| max_pages | 1000 | 1-300000 | Maximum number of pages to crawl. | 
| max_depth | 10 | 1-100 | Maximum crawl depth. | 
| max_req | 500 | 1-500 | Maximum number of requests per second. | 
| max_redirects | 5 | 1-50 | Maximum number of redirects to follow. | 
| min_title_len | 20 | 1-10000 | Minimum length for the <title> tag. | 
| max_title_len | 65 | 1-10000 | Maximum length for the <title> tag. | 
| min_description_len | 1 | 1-10000 | Minimum length for the meta description. | 
| max_description_len | 158 | 1-10000 | Maximum length for the meta description. | 
| max_size | 3000 | 1-100000 | Maximum page size in kilobytes. | 
| min_words | 250 | 1-10000 | Minimum word count per page. | 
| max_h1_len | 100 | 1-10000 | Maximum length for <h1> tags. | 
| max_h2_len | 100 | 1-10000 | Maximum length for <h2> tags. | 
| allow | null | String | Only crawl URLs that start with this path. | 
| disallow | null | String | Do not crawl URLs that start with this path. | 
| hide | null | String | Hide URLs and resources that start with this path from the report. | 
Request examples
For a standard audit:
curl --location 'https://api.seranking.com/v1/site-audit/audits/standard' \
--header 'Content-Type: application/json' \
--header 'Authorization: Token YOUR_API_KEY' \
--data '{
    "domain": "example.com",
    "title": "Example Audit Title",
    "settings": {
        "source_site": 1,
        "source_sitemap": 1,
        "source_subdomain": 0,
        "source_file": 0,
        "check_robots": 1,
        "ignore_params": 0,
        "custom_params": "utm_source,utm_medium,utm_term,utm_content,utm_campaign",
        "ignore_noindex": 0,
        "ignore_nofollow": 0,
        "user_agent": 0,
        "login": "",
        "password": "",
        "max_pages": 10000,
        "max_depth": 10,
        "max_req": 500,
        "max_redirects": 5,
        "min_title_len": 20,
        "max_title_len": 65,
        "min_description_len": 1,
        "max_description_len": 158,
        "max_size": 3000,
        "min_words": 250,
        "max_h1_len": 100,
        "max_h2_len": 100
    }
}'
For an advanced audit:
curl --location 'https://api.seranking.com/v1/site-audit/audits/advanced' \
--header 'Content-Type: application/json' \
--header 'Authorization: Token YOUR_API_KEY' \
--data '{
    "domain": "spa-example.com",
    "title": "Advanced Audit for SPA-Example.com",
    "settings": {
        "max_pages": 100,
        "source_subdomain": 1
    }
}'
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 (e.g., 700237036). | 
Response example
{
   "id": 700237036
}
List audits
Cost: 0 credits
Retrieves a list of all website audits associated with your account, providing key details and statistics for each.
Request parameters
| Parameter | Type | Required | Default | Description | 
|---|---|---|---|---|
| limit | Integer | No | 100 | Number of audits to return in the list. | 
| offset | Integer | No | 0 | Starting position (offset) for the list of audits. | 
| search | String | No | N/A | Filters the list by a search term matching the audit’s title or URL. | 
| date_start | String | No | N/A | Start date for filtering audits (YYYY-MM-DD). | 
| date_end | String | No | N/A | End date for filtering audits (YYYY-MM-DD). | 
Request example
curl --location 'https://api.seranking.com/v1/site-audit/audits?limit=4&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 count of audits and an array of audit objects.
| Parameter | Type | Description | 
|---|---|---|
| total | Integer | Total number of audits matching the filter criteria. | 
| items | Array | Array of objects, each representing a website audit. | 
Each object in the items array has the following structure:
| Parameter | Type | Description | 
|---|---|---|
| id | Integer | Unique identifier for the audit report (e.g., 700138456). | 
| url | String | URL of the audited website (e.g., http://booking.com). | 
| title | String | Title of the audit report (e.g., booking.com). | 
| last_update | String | Date the audit was last updated in YYYY-MM-DD format (e.g., 2025-07-08). | 
| status | String | Current status of the audit (e.g., finished, processing). | 
| stats | Object | Object containing the latest statistics for the audit (score, errors, warnings, notices, crawled). For example:{ | 
| prev_stats | Object | Object containing statistics from the previous audit run. Can be null if no prior data exists. | 
Response example
A successful request returns a JSON object containing the unique ID of the created audit.
{
    "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
Cost: 0 credits
Checks the real-time status of a specific website audit, whether it’s queued, currently processing, or already finished. This is useful for monitoring the progress of a crawl before fetching the full report.
Request parameters
| Parameter | Type | Required | Default | Description | 
|---|---|---|---|---|
| audit_id | Integer | Yes | N/A | Unique identifier of the audit to check. | 
Request example
curl --location 'https://api.seranking.com/v1/site-audit/audits/status?audit_id=700183831' \
--header 'Authorization: Token YOUR_API_KEY'
Response parameters
If successful, the server returns a JSON object containing the current status and key metrics of the audit.
| Parameter | Type | Description | 
|---|---|---|
| status | String | Current status of the audit. Possible values: queued, processing, finished, cancelled, expired. | 
| total_pages | Integer | Number of pages crawled so far. | 
| total_errors | Integer | Current count of critical issues found. | 
| total_warnings | Integer | Current count of warnings found. | 
| total_passed | Integer | Current count of checks that have passed. | 
| start_time | String | Timestamp for when the audit began. | 
| audit_time | String | Timestamp for when the audit was completed. This will be present if the status 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
Cost: 0 credits
Retrieves the full, detailed report for a completed website audit. The report includes the site’s overall health score, domain properties, and a section-by-section breakdown of all checks performed, categorized by issue type (errors, warnings, notices).
Request parameters
| Parameter | Type | Required | Default | Description | 
|---|---|---|---|---|
| audit_id | Integer | Yes | N/A | Unique identifier of the audit for which to retrieve the report. | 
Request example
curl --location 'https://api.seranking.com/v1/site-audit/audits/report?audit_id=700183831' \
--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 if the audit has completed. The report is only available if this is true. | 
| score_percent | Integer | Overall health score of the website, from 0 to 100. | 
| total_pages | Integer | Total number of pages crawled during the audit. | 
| total_errors | Integer | Total count of critical issues found. | 
| total_warnings | Integer | Total count of warnings found. | 
| total_notices | Integer | Total count of minor issues or notices. | 
| total_passed | Integer | Total count of checks that passed successfully. | 
| audit_time | String | Timestamp for when the audit was completed. | 
| domain_props | Object | Object containing general data about the audited domain. See details below. | 
| sections | Array | Array of objects, where each object represents a category of audit checks (e.g., Security, Content). | 
domain_props object
| Parameter | Type | Description | 
|---|---|---|
| expdate | String | Expiration date of the domain registration. | 
| backlinks | String | Total number of backlinks pointing to the domain. | 
| index_google | String | Number of pages indexed in Google. | 
sections array
Each object in the sections array contains a uid (unique ID), a name for the category, and a props object. The props object lists all the individual checks for that category. Each check includes:
code: A unique identifier for the check (e.g., no_https).status: The result of the check (error, warning, notice, passed).name: A human-readable name for the check.value: The number of pages affected by this issue.
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"
}
Get all crawled pages
Cost: 0 credits
Returns a paginated list of all URLs found during an audit, providing a complete sitemap as discovered by the crawler. This includes pages with and without detected issues.
Request parameters
| Parameter | Type | Required | Default | Description | 
|---|---|---|---|---|
| audit_id | Integer | Yes | N/A | Unique identifier of the audit report. | 
| limit | Integer | No | 100 | Number of pages to return in the list. | 
| offset | Integer | No | 0 | Starting position for the list of pages. | 
Request example
curl --location 'https://api.seranking.com/v1/site-audit/audits/pages?audit_id=700183831&limit=2&offset=0' \
--header 'Authorization: Token YOUR_API_KEY'
Response parameters
If successful, the server returns a JSON object containing the total count of crawled pages and an array of page objects.
| Parameter | Type | Description | 
|---|---|---|
| items | Array | Array of objects, each representing a crawled page with its detailed metrics. | 
| total | Integer | Total number of pages crawled in the audit. | 
Each object in the items array has the following structure:
| Parameter | Type | Description | 
| id | String | Unique internal identifier for the page (e.g., 50958380). | 
| url | String | Full URL of the crawled page (e.g., https://www.vitality.co.uk/). | 
| status | String | HTTP status code returned by the page (e.g., 200). | 
| depth | String | Crawl depth of the page, i.e., distance from the start page (e.g., 1). | 
| load_ms | String | Time it took for the page to load, in milliseconds (e.g., 1373). | 
| title | String | Content of the <title> tag (e.g., Vitality Insurance). | 
| description | String | Content of the meta description tag (e.g., Vitality is a leading UK insurer...). | 
| h1 | String | Content of the first <h1> tag (e.g., Live longer with Vitality insurance). | 
| words_count | String | Total number of words found on the page (e.g., 1621). | 
| issues | String | Total count of issues found on the page (e.g., 2). | 
| errors | String | Total count of critical errors on the page (e.g., 0). | 
| warnings | String | Total count of warnings on the page (e.g., 0). | 
| notices | String | Total count of notices on the page (e.g., 2). | 
| inlinks | String | Number of internal links pointing to this page (e.g., 922). | 
| outlinks_internal | String | Number of internal links found on this page (e.g., 83). | 
| outlinks_external | String | Number of external links found on this page (e.g., 12). | 
| canonical_url | String | Canonical URL specified for the page (e.g., https://www.vitality.co.uk/). | 
| indexable_status | String | Indexability status of the page (e.g., ok). | 
Response example
A successful request returns a JSON object containing a list of page objects with their associated data.
{
    "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
Cost: 0 credits
Retrieves a paginated list of all URLs affected by a specific issue within a given audit. You can identify the code for an issue by first fetching the main audit report.
Request parameters
| Parameter | Type | Required | Default | Description | 
|---|---|---|---|---|
| audit_id | Integer | Yes | N/A | Unique identifier of the audit report. | 
| code | String | Yes | N/A | Unique code for the issue (e.g., title_duplicate). | 
| limit | Integer | No | 100 | Number of URLs to return in the list. | 
| offset | Integer | No | 0 | Starting position (offset) for the list of URLs. | 
Request example
curl --location 'https://api.seranking.com/v1/site-audit/audits/issue-pages?code=title_duplicate&audit_id=700183831&limit=10&offset=0' \
--header 'Authorization: Token YOUR_API_KEY' 
Response parameters
If successful, the server returns a JSON object containing the total count of affected URLs and an array of the URLs themselves.
| Parameter | Type | Description | 
|---|---|---|
| total_urls | Integer | Total number of URLs affected by this specific issue. | 
| urls | Array | Array of strings, where each string is a URL affected by the issue. | 
| urls_type | String | Describes the format of the urls array. For this endpoint, it is typically simple_urls_array. | 
Response example
A successful request returns a JSON object containing the unique ID of the created audit.
{
  "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 by URL
Cost: 0 credits
Retrieves a detailed list of all issues (errors, warnings, and notices) that were found on a single, specific page within an audit. The response also includes the full page_data object for complete context.
Request parameters
| Parameter | Type | Required | Default | Description | 
|---|---|---|---|---|
| audit_id | Integer | Yes | N/A | Unique identifier of the audit. | 
| url_id | Integer | No | N/A | Unique identifier of the page, obtained from the pages endpoint. Either url_id or url must be provided. | 
| url | String | No | N/A | Full page URL. Either url or url_id must be provided. | 
Request example
curl --location 'https://api.seranking.com/v1/site-audit/audits/issues?audit_id=700183831&url_id=50958380' \
--header 'Authorization: Token YOUR_API_KEY'
Response parameters
If successful, the server returns a JSON object containing the page’s URL, its full data object, and an array of all issues found on that page.
| Parameter | Type | Description | 
|---|---|---|
| url | String | Full URL of the page being queried. | 
| page_data | Object | Snapshot of all metrics and metadata collected for the page during the crawl. | 
| issues | Array | Array of objects, where each object is a specific issue (error, warning, or notice) found on the page. | 
page_data object
The object provides a full report card of the page’s characteristics. Key fields include:
- On-page SEO: 
title,description,h1,words,robots,canonical - Technical metrics: 
js_size,css_size,img_size,cache,encoding - Link data: 
inlinks,total_links,redirect_links - Issue summary: 
issues_count,errors_count,warnings_count,notices_count 
issues array
Each object in the issues array represents a specific problem and has the following structure:
| Parameter | Type | Description | 
|---|---|---|
| code | String | Unique, machine-readable identifier for the issue type (e.g., css_big). | 
| type | String | Severity of the issue (e.g., error, warning, notice). | 
| group | String | Category the issue belongs to (e.g., links_v2, css). | 
| snippet | Object | Provides concrete, actionable details about the issue: {...} | 
The snippet value provides the specific evidence, such as a list of redirecting URLs or an oversized CSS file with its size.
Response example
A successful request returns a JSON object containing the page’s data and a list of its issues.
{
    "url": "[https://www.vitality.co.uk/](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/](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](https://members.vitality.co.uk/my-points/confirm-an-activity)"
                    },
                    {
                        "status": "302",
                        "url": "[https://members.vitality.co.uk/](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](https://www.vitality.co.uk/dist/vds/css/presales.css?v=2025.6.30121236)",
                        "size": "443163"
                    }
                ]
            }
        }
    ]
}
Get all found links
Cost: 0 credits
Returns a paginated list of every hyperlink (e.g., in <a> tags, canonicals) discovered across the entire site during the audit. It allows for a complete analysis of all internal and outbound links.
Request parameters
| Parameter | Type | Required | Default | Description | 
|---|---|---|---|---|
| audit_id | Integer | Yes | N/A | Unique identifier of the audit. | 
| page_type | String | No | all | Filters links by type. Possible values: internal, external, all. | 
| filter | Array | No | N/A | Array of filter objects to build complex queries. Allows for filtering on link properties like HTTP status. See details below. | 
| limit | Integer | No | N/A | Number of links to return in the list. | 
| offset | Integer | No | N/A | Starting position for the list of links. | 
Advanced filtering
To build complex queries, you can 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]):
filter[index][param]: (Required) The field you want to filter on.filter[index][value]: (Required) The value to match.filter[index][type]: The logical operator (andoror) to connect this condition to the previous one. This is required for the second condition onwards (i.e., forfilter[1],filter[2], etc.).
Available filterable parameters (param):
statustypesource_noindexnofollowanchor_type
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/site-audit/audits/links?audit_id=700183831&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/site-audit/audits/links?audit_id=700183831&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
curl --location 'https://api.seranking.com/v1/site-audit/audits/links?audit_id=700183831&page_type=all&limit=4&offset=0' \
--header 'Authorization: Token YOUR_API_KEY'
Response parameters
If successful, the server returns a JSON object containing the total count of links and an array of link objects.
| Parameter | Type | Description | 
|---|---|---|
| total | Integer | Total number of links matching the filter criteria. | 
| items | Array | Array of objects, each representing a discovered link. | 
Each object in the items array has the following structure:
| Parameter | Type | Description | 
|---|---|---|
| url | String | Destination URL of the link (e.g., https://www.vitality.co.uk/). | 
| id | String | Unique identifier for this specific link instance (e.g., 1153787496). | 
| status | String | HTTP status code of the destination URL (e.g., 200). | 
| type | String | Type of the link (e.g., hyperlink, canonical). | 
| source_url | String | URL of the page where the link was discovered (e.g., https://www.vitality.co.uk/advisers/). | 
| source_noindex | String | Indicates if the source page has a noindex directive (“1” for yes, “0” for no). | 
| nofollow | String | Indicates if the link has a rel=”nofollow” attribute (“1” for yes, “0” for no). | 
| anchor | String | Visible, clickable text of the link (e.g., Personal). | 
| anchor type | String | Type of the anchor element (e.g., text, image). | 
Response example
A successful request returns a JSON object containing a list of all discovered links.
{
    "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 by date
Cost: 0 credits
Retrieves a historical snapshot of a specific audit run, providing the full context of that audit, including the settings used, domain data at the time, and a summary of all issues found.
Request parameters
| Parameter | Type | Required | Default | Description | 
|---|---|---|---|---|
| audit_id | Integer | Yes | N/A | Unique identifier of the audit. | 
| date | String | Yes | N/A | Specific date of the historical audit to retrieve (YYYY-MM-DD). | 
Request example
curl --location 'https://api.seranking.com/v1/site-audit/audits/history?audit_id=700183831&date=2025-07-29' \
--header 'Authorization: Token YOUR_API_KEY'
Response parameters
If successful, the server returns a JSON object containing the complete historical data for the specified audit run.
| Parameter | Type | Description | 
|---|---|---|
| audit_time | String | Exact timestamp when the historical audit was completed. | 
| domain_data | Object | Object containing general data about the domain at the time of the audit (e.g., backlinks, indexed pages). | 
| settings | Object | Object detailing all the configuration settings that were used for this specific audit run. | 
| pages_data | Object | Object where each key is an issue code (e.g., title_duplicate) and the value is the number of pages affected by that issue. | 
| totals | Object | Object summarizing the final counts for the audit (total_pages, total_warnings, total_errors). | 
Response example
A successful request returns a JSON object containing the unique ID of the created audit.
{
    "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
Cost: 0 credits
Changes the title of an existing website audit report.
Request parameters
Query parameter:
| Parameter | Type | Required | Default | Description | 
|---|---|---|---|---|
| audit_id | Integer | Yes | N/A | Unique identifier of the audit to update. | 
Body parameter:
| Parameter | Type | Required | Default | Description | 
|---|---|---|---|---|
| title | String | Yes | N/A | New title for the audit report. Maximum 300 characters. | 
Request example
curl --location --request PATCH 'https://api.seranking.com/v1/site-audit/audits?audit_id=89263' \
--header 'Content-Type: application/json' \
--header 'Authorization: Token YOUR_API_KEY' \
--data '{
    "title": "New Title for Ananda Ioga Audit"
}'
Response parameters
If successful, the server returns an HTTP 200 OK status code with an empty response body, confirming that the title has been updated.
Response example
[]
Delete audit
Cost: 0 credits
Permanently deletes a specified website audit report and all of its associated data. This action can’t be undone.
Request parameters
| Parameter | Type | Required | Default | Description | 
|---|---|---|---|---|
| audit_id | Integer | Yes | N/A | Unique identifier of the audit to delete. | 
Request example
curl --location --request DELETE 'https://api.seranking.com/v1/site-audit/audits?audit_id=89263' \
--header 'Authorization: Token YOUR_API_KEY'
Response parameters
If successful, the server returns an HTTP 200 OK status code with an empty response body, confirming that the audit has been deleted.
Response example
[]
Recheck audit
There are two endpoints for initiating a new crawl of a previously completed audit, using the same settings as the original run. This is useful for tracking changes and confirming that issues have been resolved.
Recheck standard audit
Cost: 2 credits per crawled page
Launches a new standard crawl for an existing audit.
Recheck advanced audit
Cost: 20 credits per crawled page
Launches a new advanced crawl with JavaScript rendering for an existing audit.
Request parameters
| Parameter | Type | Required | Default | Description | 
|---|---|---|---|---|
| audit_id | String | Yes | N/A | Unique identifier of the audit to recheck. This is passed as a query parameter. | 
Request examples
For a standard recheck:
curl --location --request POST 'https://api.seranking.com/v1/site-audit/audits/recheck/standard?audit_id=700237033' \
--header 'Authorization: Token YOUR_API_KEY'
For an advanced recheck:
curl --location --request POST 'https://api.seranking.com/v1/site-audit/audits/recheck/advanced?audit_id=700237033' \
--header 'Authorization: Token YOUR_API_KEY'
Response parameters
If successful, the server returns an HTTP 200 OK status code with an empty response body, confirming that the recheck has been initiated.
Response example
[]

