curl --request POST \
--url https://api.aisa.one/apis/v1/dataforseo/on_page/pages \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
[
{
"id": "07281559-0695-0216-0000-c269be8b7592",
"filters": [
[
"resource_type",
"=",
"html"
],
"and",
[
"meta.scripts_count",
">",
40
]
],
"order_by": [
"meta.content.plain_text_word_count,desc"
],
"limit": 10
}
]
'import requests
url = "https://api.aisa.one/apis/v1/dataforseo/on_page/pages"
payload = [
{
"id": "07281559-0695-0216-0000-c269be8b7592",
"filters": [["resource_type", "=", "html"], "and", ["meta.scripts_count", ">", 40]],
"order_by": ["meta.content.plain_text_word_count,desc"],
"limit": 10
}
]
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify([
{
id: '07281559-0695-0216-0000-c269be8b7592',
filters: [['resource_type', '=', 'html'], 'and', ['meta.scripts_count', '>', 40]],
order_by: ['meta.content.plain_text_word_count,desc'],
limit: 10
}
])
};
fetch('https://api.aisa.one/apis/v1/dataforseo/on_page/pages', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.aisa.one/apis/v1/dataforseo/on_page/pages",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
[
'id' => '07281559-0695-0216-0000-c269be8b7592',
'filters' => [
[
'resource_type',
'=',
'html'
],
'and',
[
'meta.scripts_count',
'>',
40
]
],
'order_by' => [
'meta.content.plain_text_word_count,desc'
],
'limit' => 10
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.aisa.one/apis/v1/dataforseo/on_page/pages"
payload := strings.NewReader("[\n {\n \"id\": \"07281559-0695-0216-0000-c269be8b7592\",\n \"filters\": [\n [\n \"resource_type\",\n \"=\",\n \"html\"\n ],\n \"and\",\n [\n \"meta.scripts_count\",\n \">\",\n 40\n ]\n ],\n \"order_by\": [\n \"meta.content.plain_text_word_count,desc\"\n ],\n \"limit\": 10\n }\n]")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.aisa.one/apis/v1/dataforseo/on_page/pages")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("[\n {\n \"id\": \"07281559-0695-0216-0000-c269be8b7592\",\n \"filters\": [\n [\n \"resource_type\",\n \"=\",\n \"html\"\n ],\n \"and\",\n [\n \"meta.scripts_count\",\n \">\",\n 40\n ]\n ],\n \"order_by\": [\n \"meta.content.plain_text_word_count,desc\"\n ],\n \"limit\": 10\n }\n]")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.aisa.one/apis/v1/dataforseo/on_page/pages")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "[\n {\n \"id\": \"07281559-0695-0216-0000-c269be8b7592\",\n \"filters\": [\n [\n \"resource_type\",\n \"=\",\n \"html\"\n ],\n \"and\",\n [\n \"meta.scripts_count\",\n \">\",\n 40\n ]\n ],\n \"order_by\": [\n \"meta.content.plain_text_word_count,desc\"\n ],\n \"limit\": 10\n }\n]"
response = http.request(request)
puts response.read_body{
"version": "<string>",
"status_code": 123,
"status_message": "<string>",
"time": "<string>",
"cost": 123,
"tasks_count": 123,
"tasks_error": 123,
"tasks": [
{
"id": "<string>",
"status_code": 123,
"status_message": "<string>",
"time": "<string>",
"cost": 123,
"result_count": 123,
"path": [
"<string>"
],
"data": {},
"result": [
{
"crawl_progress": "<string>",
"crawl_status": {
"max_crawl_pages": 123,
"pages_in_queue": 123,
"pages_crawled": 123
},
"search_after_token": "<string>",
"current_offset": 123,
"total_items_count": 123,
"items_count": 123,
"items": [
{
"meta": {
"title": "<string>",
"charset": 123,
"follow": true,
"generator": "<string>",
"htags": {},
"description": "<string>",
"favicon": "<string>",
"meta_keywords": "<string>",
"canonical": "<string>",
"internal_links_count": 123,
"external_links_count": 123,
"inbound_links_count": 123,
"images_count": 123,
"images_size": 123,
"scripts_count": 123,
"scripts_size": 123,
"stylesheets_count": 123,
"stylesheets_size": 123,
"title_length": 123,
"description_length": 123,
"render_blocking_scripts_count": 123,
"render_blocking_stylesheets_count": 123,
"cumulative_layout_shift": 123,
"meta_title": "<string>",
"content": {
"plain_text_size": 123,
"plain_text_rate": 123,
"plain_text_word_count": 123,
"automated_readability_index": 123,
"coleman_liau_readability_index": 123,
"dale_chall_readability_index": 123,
"flesch_kincaid_readability_index": 123,
"smog_readability_index": 123,
"description_to_content_consistency": 123,
"title_to_content_consistency": 123,
"meta_keywords_to_content_consistency": 123
},
"deprecated_tags": [
"<string>"
],
"duplicate_meta_tags": [
"<string>"
],
"spell": {
"hunspell_language_code": "<string>",
"misspelled": [
{
"word": "<string>"
}
]
},
"social_media_tags": {},
"broken_html": {
"errors": [
{
"line": 123,
"column": 123,
"message": "<string>",
"status_code": 123
}
],
"warnings": [
{
"line": 123,
"column": 123,
"message": "<string>",
"status_code": 123
}
]
}
},
"page_timing": {
"time_to_interactive": 123,
"dom_complete": 123,
"largest_contentful_paint": 123,
"first_input_delay": 123,
"connection_time": 123,
"time_to_secure_connection": 123,
"request_sent_time": 123,
"waiting_time": 123,
"download_time": 123,
"duration_time": 123,
"fetch_start": 123,
"fetch_end": 123
},
"onpage_score": 123,
"total_dom_size": 123,
"custom_js_response": {},
"custom_js_client_exception": "<string>",
"broken_resources": true,
"broken_links": true,
"duplicate_title": true,
"duplicate_description": true,
"duplicate_content": true,
"click_depth": 123,
"is_resource": true,
"url_length": 123,
"relative_url_length": 123,
"resource_type": "<string>",
"status_code": 123,
"location": "<string>",
"url": "<string>",
"resource_errors": {
"errors": [
{
"line": 123,
"column": 123,
"message": "<string>",
"status_code": 123
}
],
"warnings": [
{
"line": 123,
"column": 123,
"message": "<string>",
"status_code": 123
}
]
},
"size": 123,
"encoded_size": 123,
"total_transfer_size": 123,
"fetch_time": "<string>",
"cache_control": {
"cachable": true,
"ttl": 123
},
"checks": {},
"content_encoding": "<string>",
"media_type": "<string>",
"server": "<string>",
"last_modified": {
"header": "<string>",
"sitemap": "<string>",
"meta_tag": "<string>"
}
}
]
}
]
}
]
}OnPage API Pages
This endpoint returns a list of crawled pages with on-page check-ups and other metrics related to the page performance. Using this function you will get page-specific data with detailed information on how well your pages are optimized for search. for more info please visit ‘https://docs.dataforseo.com/v3/on_page/pages/?bash’
curl --request POST \
--url https://api.aisa.one/apis/v1/dataforseo/on_page/pages \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
[
{
"id": "07281559-0695-0216-0000-c269be8b7592",
"filters": [
[
"resource_type",
"=",
"html"
],
"and",
[
"meta.scripts_count",
">",
40
]
],
"order_by": [
"meta.content.plain_text_word_count,desc"
],
"limit": 10
}
]
'import requests
url = "https://api.aisa.one/apis/v1/dataforseo/on_page/pages"
payload = [
{
"id": "07281559-0695-0216-0000-c269be8b7592",
"filters": [["resource_type", "=", "html"], "and", ["meta.scripts_count", ">", 40]],
"order_by": ["meta.content.plain_text_word_count,desc"],
"limit": 10
}
]
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify([
{
id: '07281559-0695-0216-0000-c269be8b7592',
filters: [['resource_type', '=', 'html'], 'and', ['meta.scripts_count', '>', 40]],
order_by: ['meta.content.plain_text_word_count,desc'],
limit: 10
}
])
};
fetch('https://api.aisa.one/apis/v1/dataforseo/on_page/pages', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.aisa.one/apis/v1/dataforseo/on_page/pages",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
[
'id' => '07281559-0695-0216-0000-c269be8b7592',
'filters' => [
[
'resource_type',
'=',
'html'
],
'and',
[
'meta.scripts_count',
'>',
40
]
],
'order_by' => [
'meta.content.plain_text_word_count,desc'
],
'limit' => 10
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.aisa.one/apis/v1/dataforseo/on_page/pages"
payload := strings.NewReader("[\n {\n \"id\": \"07281559-0695-0216-0000-c269be8b7592\",\n \"filters\": [\n [\n \"resource_type\",\n \"=\",\n \"html\"\n ],\n \"and\",\n [\n \"meta.scripts_count\",\n \">\",\n 40\n ]\n ],\n \"order_by\": [\n \"meta.content.plain_text_word_count,desc\"\n ],\n \"limit\": 10\n }\n]")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.aisa.one/apis/v1/dataforseo/on_page/pages")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("[\n {\n \"id\": \"07281559-0695-0216-0000-c269be8b7592\",\n \"filters\": [\n [\n \"resource_type\",\n \"=\",\n \"html\"\n ],\n \"and\",\n [\n \"meta.scripts_count\",\n \">\",\n 40\n ]\n ],\n \"order_by\": [\n \"meta.content.plain_text_word_count,desc\"\n ],\n \"limit\": 10\n }\n]")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.aisa.one/apis/v1/dataforseo/on_page/pages")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "[\n {\n \"id\": \"07281559-0695-0216-0000-c269be8b7592\",\n \"filters\": [\n [\n \"resource_type\",\n \"=\",\n \"html\"\n ],\n \"and\",\n [\n \"meta.scripts_count\",\n \">\",\n 40\n ]\n ],\n \"order_by\": [\n \"meta.content.plain_text_word_count,desc\"\n ],\n \"limit\": 10\n }\n]"
response = http.request(request)
puts response.read_body{
"version": "<string>",
"status_code": 123,
"status_message": "<string>",
"time": "<string>",
"cost": 123,
"tasks_count": 123,
"tasks_error": 123,
"tasks": [
{
"id": "<string>",
"status_code": 123,
"status_message": "<string>",
"time": "<string>",
"cost": 123,
"result_count": 123,
"path": [
"<string>"
],
"data": {},
"result": [
{
"crawl_progress": "<string>",
"crawl_status": {
"max_crawl_pages": 123,
"pages_in_queue": 123,
"pages_crawled": 123
},
"search_after_token": "<string>",
"current_offset": 123,
"total_items_count": 123,
"items_count": 123,
"items": [
{
"meta": {
"title": "<string>",
"charset": 123,
"follow": true,
"generator": "<string>",
"htags": {},
"description": "<string>",
"favicon": "<string>",
"meta_keywords": "<string>",
"canonical": "<string>",
"internal_links_count": 123,
"external_links_count": 123,
"inbound_links_count": 123,
"images_count": 123,
"images_size": 123,
"scripts_count": 123,
"scripts_size": 123,
"stylesheets_count": 123,
"stylesheets_size": 123,
"title_length": 123,
"description_length": 123,
"render_blocking_scripts_count": 123,
"render_blocking_stylesheets_count": 123,
"cumulative_layout_shift": 123,
"meta_title": "<string>",
"content": {
"plain_text_size": 123,
"plain_text_rate": 123,
"plain_text_word_count": 123,
"automated_readability_index": 123,
"coleman_liau_readability_index": 123,
"dale_chall_readability_index": 123,
"flesch_kincaid_readability_index": 123,
"smog_readability_index": 123,
"description_to_content_consistency": 123,
"title_to_content_consistency": 123,
"meta_keywords_to_content_consistency": 123
},
"deprecated_tags": [
"<string>"
],
"duplicate_meta_tags": [
"<string>"
],
"spell": {
"hunspell_language_code": "<string>",
"misspelled": [
{
"word": "<string>"
}
]
},
"social_media_tags": {},
"broken_html": {
"errors": [
{
"line": 123,
"column": 123,
"message": "<string>",
"status_code": 123
}
],
"warnings": [
{
"line": 123,
"column": 123,
"message": "<string>",
"status_code": 123
}
]
}
},
"page_timing": {
"time_to_interactive": 123,
"dom_complete": 123,
"largest_contentful_paint": 123,
"first_input_delay": 123,
"connection_time": 123,
"time_to_secure_connection": 123,
"request_sent_time": 123,
"waiting_time": 123,
"download_time": 123,
"duration_time": 123,
"fetch_start": 123,
"fetch_end": 123
},
"onpage_score": 123,
"total_dom_size": 123,
"custom_js_response": {},
"custom_js_client_exception": "<string>",
"broken_resources": true,
"broken_links": true,
"duplicate_title": true,
"duplicate_description": true,
"duplicate_content": true,
"click_depth": 123,
"is_resource": true,
"url_length": 123,
"relative_url_length": 123,
"resource_type": "<string>",
"status_code": 123,
"location": "<string>",
"url": "<string>",
"resource_errors": {
"errors": [
{
"line": 123,
"column": 123,
"message": "<string>",
"status_code": 123
}
],
"warnings": [
{
"line": 123,
"column": 123,
"message": "<string>",
"status_code": 123
}
]
},
"size": 123,
"encoded_size": 123,
"total_transfer_size": 123,
"fetch_time": "<string>",
"cache_control": {
"cachable": true,
"ttl": 123
},
"checks": {},
"content_encoding": "<string>",
"media_type": "<string>",
"server": "<string>",
"last_modified": {
"header": "<string>",
"sitemap": "<string>",
"meta_tag": "<string>"
}
}
]
}
]
}
]
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
ID of the taskrequired fieldyou can get this ID in the response of the Task POST endpointexample:"07131248-1535-0216-1000-17384017ad04"
the maximum number of returned pagesoptional fielddefault value: 100maximum value: 1000
offset in the results array of returned pagesoptional fielddefault value: 0maximum value: 2000000if you specify the 10 value, the first ten pages in the results array will be omitted and the data will be provided for the successive pages
array of results filtering parametersoptional fieldyou can add several filters at once (8 filters maximum)you should set a logical operator and, or between the conditionsthe following operators are supported:regex, not_regex, <, <=, >, >=, =, <>, in, not_in, like, not_likeyou can use the % operator with like and not_like to match any string of zero or more charactersexample:["meta.external_links_count","<=",50]["url","like","https://dataforseo.com/apis/dataforseo-labs-api"][["checks.high_waiting_time","=",false],"and",["resource_type","=","html"]][["page_timing.duration_time","<",100],"and",[["checks.large_page_size","=",false],"or",["checks.high_waiting_time","=",false]]]The full list of possible filters is available by this link.
results sorting rulesoptional fieldyou can use the same values as in the filters array to sort the resultspossible sorting types:asc - results will be sorted in the ascending orderdesc - results will be sorted in the descending orderyou should use a comma to set up a sorting typeexample:["meta.external_links_count,desc"]note that you can set no more than three sorting rules in a single requestyou should use a comma to separate several sorting rulesexample:["page_timing.dom_complete,asc","size,desc"]
token for subsequent requestsoptional fieldprovided in the identical filed of the response to each request;use this parameter to avoid timeouts while trying to obtain over 20,000 results in a single request;by specifying the unique search_after_token value from the response array, you will get the subsequent results of the initial task;search_after_token values are unique for each subsequent task ;Note: if the search_after_token is specified in the request, all other parameters should be identical to the previous request
user-defined task identifieroptional fieldthe character limit is 255you can use this parameter to identify the task and match it with the resultyou will find the specified tag value in the data object of the response
[
{
"id": "07281559-0695-0216-0000-c269be8b7592",
"filters": [
["resource_type", "=", "html"],
"and",
["meta.scripts_count", ">", 40]
],
"order_by": ["meta.content.plain_text_word_count,desc"],
"limit": 10
}
]
Response
Successful operation
the current version of the API
general status code you can find the full list of the response codes here
general informational message you can find the full list of general informational messages here
total execution time, seconds
total tasks cost, USD
the number of tasks in the tasks array
the number of tasks in the tasks array returned with an error
array of tasks
Show child attributes
Show child attributes