AIsa On-Page Audit
Server Details
Your agent needs to crawl a site and say what is wrong with it — broken tags, duplicate content, pages nothing can index, resources that never load.
What you can ask for • "Crawl this site and list every page with a duplicate title or missing description." • "Which pages are non-indexable, and why?" • "Run Lighthouse on these URLs and give me the failing audits." • "Show the internal link graph and the orphan pages." • "Give me this page's raw HTML and its microdata."
How to use it Point any MCP client at https://mcp.aisa.one/seo-onpage/mcp and sign in with OAuth — there is no key to create or paste. 20 tools: submit a crawl and read its summary, pages, resources, links and waterfall; duplicate content and duplicate tags; keyword density; non-indexable and uncrawlable resources; parsed content, raw HTML, microdata, screenshots and Lighthouse.
Why this rather than the source A crawler you drive from the agent, with the audit results as structured data rather than a PDF.
It is also a door to the rest The same login reaches 26 sources and 580+ operations. Find the broken pages here, then ask the same agent what those pages used to rank for — without adding a second server.
What it costs Finding and inspecting an operation is free. Running one is billed per call at API prices, with no seat and no monthly minimum, and every call takes max_price_usd so an agent cannot overspend by accident.
Where else it reaches https://mcp.aisa.one/seo/mcp for all of it at once — rankings, keywords, backlinks, site health and AI-answer visibility across DataForSEO, Semrush and Ahrefs.
- Status
- Healthy
- Uptime
- 93.8% over 43 days
- OAuth
- Works in Glama
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 26 tools
The DataForSEO OnPage endpoints are mostly distinct, but the set mixes a generic AIsa router layer (search, batch_get_schema, batch_quote, batch_use) with direct post_dataforseo_on_page_* tools, so an agent may be unsure whether to call endpoints directly or route through search/batch_use. The deprecated `use` tool and the two Lighthouse-related tools add further ambiguity.
Most names use snake_case, but conventions are mixed: bare names like `account`, `search`, and `use` coexist with prefixed groups such as `batch_*`, `get_dataforseo_on_page_*`, and `post_dataforseo_on_page_*`. The verb pattern is readable but not uniform across the set.
With 26 tools, the surface is heavy for an on-page audit server. Six router/meta tools and a deprecated alias inflate the set alongside 20 endpoint wrappers, some of which are narrow documentation or auxiliary calls.
The set covers the core OnPage audit lifecycle well: crawl submission, force-stop, summary, content parsing, duplicate content/tags, keyword density, links, resources, microdata, waterfall, and Lighthouse. Minor gaps remain around per-page listing/task-status endpoints, but most audit workflows have a path.
Available Tools
26 toolsaccountShow account and usageARead-onlyInspect
Who am I, what can I use, how much can I spend: the key, the account balance, the Go-to-Market wallet when one is active, and usage for today, 7 days and 30 days. Free; needs the Authorization header. Call it to verify a new connection or to explain a 402. ok is true only when the balance was read; otherwise each entry of errors says what to do in next_step.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantial context beyond the readOnlyHint/openWorldHint/destructiveHint annotations: the call is free, it requires the Authorization header, and it discloses result semantics ('ok is true only when the balance was read; otherwise each entry of errors says what to do in next_step'). That tells an agent how to interpret partial failure, which annotations cannot convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with what the agent gets, followed by cost/auth, then call triggers, then result interpretation. No sentence is redundant and none could be dropped without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter read tool with an output schema already present, the description covers the remaining gaps: cost, auth requirement, invocation triggers, and the ok/errors/next_step contract. Nothing an agent needs to call or interpret it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the description has nothing parameter-level to compensate for, and the schema is fully covered. A 4 rather than 5 reflects that it adds no input-syntax detail, though none is possible here.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a concrete resource set (identity/key, account balance, Go-to-Market wallet, usage over 1/7/30 days) rather than restating the name. It is clearly distinguishable from every sibling, which are all Reddit, batch, or search tools. An agent knows exactly what it will learn by calling it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit triggering conditions are given: 'Call it to verify a new connection or to explain a 402.' That is a strong when-to-use statement. It stops short of 5 because it names no alternative tool or a when-not condition, though the sibling list offers no obvious competing diagnostic.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
batch_get_schemaGet AIsa tool schemas in one batchARead-onlyIdempotentInspect
Retrieve schemas for 1 to 20 exact tool names from search. Build arguments from successful schemas, then call batch_quote. Do not call batch_use yet. Use tool names exactly as search returns them, without a client prefix such as mcp__aisa__. Reuse the session_id returned by Search in all subsequent tool calls for this task. If omitted, a new session is created.
| Name | Required | Description | Default |
|---|---|---|---|
| tools | Yes | Exact tool names returned by search whose complete contracts are needed. Never invent tool names. | |
| session_id | No | Reuse the session_id returned by Search in all subsequent tool calls for this task. If omitted, a new session is created. | |
| include_documentation | No | Return the complete immutable public OpenAPI operation, referenced declarations, provenance and scoped completeness. Documentation does not change execution support. | |
| include_response_schema | No | Return the complete response_schema. Defaults to false. | |
| include_arguments_schema | No | Return the complete arguments_schema. Defaults to true. |
Output Schema
| Name | Required | Description |
|---|---|---|
| tools | Yes | |
| session_id | Yes | Reuse the session_id returned by Search in all subsequent tool calls for this task. If omitted, a new session is created. |
| error_count | Yes | |
| total_count | Yes | |
| success_count | Yes | |
| next_steps_guidance | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), so the description is not required to restate it. It adds genuine operational context: the batch_use prohibition, exact-name/prefix requirements, and session reuse semantics. It does not cover failure handling when names are invalid, keeping it below a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action and size limit, and every sentence carries workflow value. The session_id sentence duplicates the schema's own parameter description, which is minor redundancy rather than bloat.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only batch retrieval tool with an output schema, the description supplies the orchestration context an agent needs (source of names, next steps, session handling) without needing to explain return values. Nothing essential to correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds real meaning beyond the schema by constraining names to those returned by search and warning against a client prefix such as mcp__aisa__, which is not encoded in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Retrieve schemas for 1 to 20 exact tool names') and pins the source of those names to search. This clearly separates it from siblings like search (finds tools), batch_quote, and batch_use.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly sequences the workflow: build arguments from successful schemas, then call batch_quote, and 'Do not call batch_use yet.' This is an explicit when-to-use and when-not-to-use instruction naming the alternative siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
batch_quoteQuote published AIsa tools without executing themARead-onlyIdempotentInspect
Obtain AIsaServices cost quotes for 1 to 20 published tools without executing them. Same input as batch_use: exact tool names and schema-valid arguments. Never falls back to execution. The response reports auto_execute_eligible and auto_execute_threshold_micros_usd. auto_execute_eligible waives only the extra cost-confirmation step and does not override a user prohibition on execution, a narrower scope, or a tighter budget limit. Quotes are price observations, not authorization grants. Use tool names exactly as search returns them, without a client prefix such as mcp__aisa__. Reuse the session_id returned by Search in all subsequent tool calls for this task. If omitted, a new session is created.
| Name | Required | Description | Default |
|---|---|---|---|
| calls | Yes | ||
| search_id | No | Optional search correlation identifier returned by search. | |
| session_id | No | Reuse the session_id returned by Search in all subsequent tool calls for this task. If omitted, a new session is created. |
Output Schema
| Name | Required | Description |
|---|---|---|
| results | Yes | |
| batch_id | Yes | |
| session_id | Yes | Reuse the session_id returned by Search in all subsequent tool calls for this task. If omitted, a new session is created. |
| error_count | Yes | |
| total_count | Yes | |
| success_count | Yes | |
| next_steps_guidance | Yes | Deterministic next-step instructions derived from this result. Not an authorization grant. |
| auto_execute_eligible | No | True when the worst-known total of successful USD quotes is at or below auto_execute_threshold_micros_usd. A non-USD successful quote makes the batch ineligible. Present on quote responses. |
| auto_execute_threshold_micros_usd | No | Configured auto-execute threshold in micro-USD. 0 disables automatic execution. Present on quote responses. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well past the readOnly/idempotent annotations by explaining that quotes are price observations rather than authorization grants, and precisely delimiting what auto_execute_eligible does and does not waive (user prohibition, narrower scope, tighter budget). It also guarantees no execution fallback, which is the key behavioral risk for this tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded and most sentences carry distinct rules (no fallback, eligibility limits, naming, session reuse). It is on the long side and the argument-shape constraint is stated twice in spirit, but little is truly wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value documentation isn't required, yet the description still flags the two response fields that matter for a downstream decision. Combined with session and naming guidance, an agent has everything needed to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
At 67% schema coverage the schema already documents each parameter, so the description earns credit only for added meaning: exact-name rules for 'tool', session_id reuse semantics, and the 1-to-20 argument-shape parallel with batch_use. It doesn't clarify search_id beyond what the schema states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Obtain AIsaServices cost quotes for 1 to 20 published tools') plus the crucial scope qualifier 'without executing them.' It is immediately distinguishable from the sibling batch_use, which executes rather than quotes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly names the parallel sibling ('Same input as batch_use') and draws the boundary ('Never falls back to execution'). It also gives operational conditions: use names exactly as search returns them, strip any mcp__aisa__ prefix, and reuse session_id from Search for the task.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
batch_useExecute published AIsa toolsADestructiveInspect
Billable API calls can incur substantial charges. Never call before a successful batch_quote for the same tools and arguments. Execute only when that quote response reports auto_execute_eligible=true for these calls, or when explicit user authorization covers that cost and risk. auto_execute_eligible waives only the extra cost-confirmation step; it does not override a user prohibition on execution, a narrower scope, or a tighter budget limit. Re-quote if tools, arguments, or scope change. Execute 1 to 20 independent published-tool calls; never silently retry. A missing or failed quote is not free. Use tool names exactly as search returns them, without a client prefix such as mcp__aisa__. Reuse the session_id returned by Search in all subsequent tool calls for this task. If omitted, a new session is created.
| Name | Required | Description | Default |
|---|---|---|---|
| calls | Yes | ||
| search_id | No | Optional search correlation identifier returned by search. | |
| session_id | No | Reuse the session_id returned by Search in all subsequent tool calls for this task. If omitted, a new session is created. |
Output Schema
| Name | Required | Description |
|---|---|---|
| results | Yes | |
| batch_id | Yes | |
| session_id | Yes | Reuse the session_id returned by Search in all subsequent tool calls for this task. If omitted, a new session is created. |
| error_count | Yes | |
| total_count | Yes | |
| success_count | Yes | |
| next_steps_guidance | Yes | Deterministic next-step instructions derived from this result. Not an authorization grant. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover mutability, destructiveness, and open-world behavior. The description adds critical business logic: billable calls, quote dependency, the meaning of auto_execute_eligible (waives only cost confirmation, not user prohibitions), and no silent retry. It doesn't detail rate limits or return format, but with an output schema present, that's acceptable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense and front-loads the cost warning, but it packs many separate instructions into one block, making it less scannable. Some sentences like 'A missing or failed quote is not free' add value, but the overall flow could be better structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the destructive, open-world annotations and the presence of an output schema, the description covers the essential preconditions and behavioral constraints. It could mention error handling or partial failure behavior, but the core guidance is sufficient for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67%, and the description adds important semantics: tool names must be exact without client prefix, session_id reuse guidance, and 1-20 call limit. It doesn't explain search_id, but the schema description for search_id is already clear enough.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb and resource: 'Execute 1 to 20 independent published-tool calls', and the title matches. It distinguishes itself from batch_quote by requiring a quote first, but doesn't explicitly contrast with the singular 'use' sibling, though that's implied by 'batch'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit when-to-use and when-not-to-use conditions: only after a successful batch_quote with auto_execute_eligible=true or explicit user authorization. It also states re-quote conditions and prohibits silent retries, leaving little ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_dataforseo_on_page_available_filtersFilters and customizable thresholds at DataForSEO OnPage APIBRead-onlyIdempotentInspect
OnPage API supports plenty of customizable crawling parameters that allow you to adapt the extraction of website data to your requirements and modify the thresholds for various performance indicators. Here you will find all the necessary information about filters and thresholds that can be used with DataForSEO OnPage API endpoints.
Usage-based billing; Default request estimate: $0.012 USD (not a fixed price). Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so the safety profile is covered. The description adds genuinely useful non-schema context in the form of usage-based billing with a default request estimate of $0.012, but says nothing about what the filter reference actually contains or how to consume it.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short, but the opening sentence is padding ('plenty of customizable crawling parameters...') that delays the one sentence that states the purpose. The pricing block is boilerplate but carries real information, so overall it is acceptable rather than tight.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter reference endpoint with a full output schema and complete annotations, the description supplies enough for an agent to understand it returns filter/threshold documentation. The only gap is the absence of any hint about what callers should do with the returned filters, which is minor given the output schema exists.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes no parameters, so per the rubric the baseline is 4. Nothing in the description is needed to explain argument semantics, and nothing contradicts the empty schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description conveys that the tool returns reference information about filters and thresholds for the DataForSEO OnPage API, but it uses no clear verb ('here you will find') and never contrasts itself with the many sibling post_dataforseo_on_page_* tools. An agent can guess the resource but cannot tell from the text alone how this differs from, say, the submit or summary tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites, and no alternatives named. The phrase about 'adapting extraction to your requirements' is aspirational marketing rather than an instruction for selecting this tool over a sibling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_dataforseo_on_page_lighthouse_auditsAudits in OnPage Lighthouse APIBRead-onlyIdempotentInspect
The OnPage Lighthouse API is based on Google’s open-source Lighthouse project and provides data on the quality of web pages.
Usage-based billing; Default request estimate: $0.012 USD (not a fixed price). Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true and destructiveHint=false, so the safety profile is covered. The description adds genuinely new context by disclosing usage-based billing with a $0.012 default request estimate, which affects invocation decisions, but it says nothing about result latency, asynchronous task availability, or data freshness.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Very short and front-loaded, with the purpose sentence first and the pricing note appended. The injected pricing block is boilerplate rather than tool-specific content, but it is compact and does not bury the point.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be spelled out, and zero parameters keep the surface simple. However, for a billing-relevant DataForSEO endpoint sitting among ~25 siblings, the definition omits what an 'audit' result contains, when it is available, and how it relates to the submit/live endpoints, leaving real gaps for correct selection.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so per the rubric the baseline is 4. With an empty schema there is nothing for the description to disambiguate, though it also gives no indication of how the audits are scoped or retrieved without inputs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the resource (OnPage Lighthouse data on web page quality) but never states the actual action of this endpoint: retrieving stored/produced audits. It reads as a general blurb about the underlying API rather than a definition of this tool, and it draws no line against siblings such as post_dataforseo_on_page_lighthouse_live_json.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to call this rather than the many sibling endpoints (submit, live_json, summary, etc.), no prerequisites, and no mention of which task IDs or site context would be needed to obtain results. Usage is entirely left to inference from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_dataforseo_on_page_lighthouse_languagesList of Languages for OnPage Lighthouse APIBRead-onlyIdempotentInspect
You will receive the list of languages by calling this API. As a response of the API server, you will receive JSON-encoded data containing a tasks array with the information specific to the set tasks.
Usage-based billing; Default request estimate: $0.012 USD (not a fixed price). Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so the safety profile is fully covered by structured data. The description adds only that the response is JSON with a tasks array, and that boilerplate is questionable for a static language-list endpoint (there is no user-supplied task set here), so it adds little while being slightly inaccurate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The first sentence directly states the outcome. The second sentence is generic DataForSEO boilerplate about a tasks array that does not describe this endpoint's actual response and does not earn its place, and the inline pricing block further dilutes the text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so the description is not obliged to explain return values — yet it spends its second sentence doing so, and inaccurately. For a zero-parameter lookup this is minimally sufficient, but the space could have been used to distinguish this tool from its metadata siblings, which it fails to do.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so per the rubric the baseline is 4. There is nothing for the description to compensate for, and no parameter ambiguity exists.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description conveys that the tool returns a list of languages, matching the title. However, it does not state a clear verb+resource framing, and it offers no differentiation from closely named siblings such as get_dataforseo_on_page_lighthouse_versions or get_dataforseo_on_page_lighthouse_audits, which are also static metadata lookups.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to call this tool, what preconditions apply, or which sibling to use instead. The reader is left to infer the entire usage context from the tool name and title alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_dataforseo_on_page_lighthouse_versionsLighthouse versions supported in OnPage APICRead-onlyIdempotentInspect
OnPage Lighthouse API is based on Google’s open-source Lighthouse project and provides data on the quality of web pages.
Usage-based billing; Default request estimate: $0.012 USD (not a fixed price). Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered structurally. The description adds genuinely useful non-annotation context: usage-based billing with a ~$0.012 default request estimate. It does not, however, add anything about the operation itself beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The opening sentence is background about the underlying Lighthouse project rather than the tool's purpose, so the description is not front-loaded on what the agent needs. The pricing block is structurally useful, but the prose sentence does not earn its place for a versions-listing tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described, and there are no parameters to document. Even so, the description never tells the agent what this call yields or when to reach for it instead of the audits/languages siblings, leaving the definition incomplete for its purpose.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline is 4. Schema coverage is 100% (empty object), and there is nothing parameter-related the description could usefully add.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description describes the OnPage Lighthouse API family in general terms ('provides data on the quality of web pages') rather than stating what this specific tool returns. It never says it lists the supported Lighthouse versions, so the only source of the actual purpose is the tool name/title. It also does nothing to distinguish itself from siblings like get_dataforseo_on_page_lighthouse_audits or get_dataforseo_on_page_lighthouse_languages.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites, and no mention of the closely related sibling tools (audits, languages) that an agent might confuse this with. The agent is left to infer usage entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_dataforseo_on_page_summaryOnPage API SummaryARead-onlyIdempotentInspect
Using this function, you can get the overall information on a website as well as drill down into exact on-page issues of a website that has been scanned. As a result, you will know what functions to use for receiving detailed data for each of the found issues.
Usage-based billing; Default request estimate: $0.012 USD (not a fixed price). Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | <em>task identifier</em><br><strong>required field</strong><br>you can get this ID in the response of the <a href="/v3/on_page/task_post/" target="_blank" rel="noopener noreferrer">Task POST</a> endpoint<br>example:<br>“07131248-1535-0216-1000-17384017ad04” |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, openWorld), so the bar is lower. The description adds genuine extra context beyond the annotations: usage-based billing with a ~$0.012 default request estimate and a note that final settlement may differ — useful cost behavior an agent cannot get from structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core sentence is reasonably front-loaded but runs on with an awkward 'as well as drill down into exact on-page issues' clause, and it opens with a stray zero-width character artifact. The pricing block is boilerplate but useful, so it earns partial credit rather than penalty.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description need not explain return values, and annotations plus a fully documented schema cover safety and input. The remaining gap is that it never states the scan must be complete/that this reads results of a POST task, which is the main thing an agent could get wrong.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single 'id' parameter, and the schema already explains how to obtain the task identifier from the Task POST response, including an example. The description adds nothing about the parameter, so the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a clear verb+resource — retrieve the overall summary of an already-scanned site's on-page data by task ID. It also positions itself against the many detailed siblings (it tells you which detailed functions to call next), though the phrasing 'get the overall information on a website' is looser than it needs to be.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied: use this to get an overview and then decide which detailed endpoints to call. It does not explicitly name the alternative detailed sibling tools or state a precondition (e.g. the scan task must have finished), so the guidance stays at the inference level.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_categoriesBrowse the AIsa catalogueARead-onlyInspect
The AIsa catalogue at a glance: categories, the servers in each, tool counts, and the dedicated endpoint to connect if you only need one category. Free. (AIsa-only: tool-router has no equivalent.) Use mcp.aisa.one/mcp?modules=<category> (or mcp.aisa.one/<category>/mcp) to have that category's tools listed directly instead of via search.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish that this is a safe, read-only, closed-world operation. The description adds useful context beyond annotations by saying it returns categories, servers, tool counts, and the dedicated endpoint, and that it is free. It omits auth/rate-limit details, but those are less critical given the read-only annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with what the tool returns and is generally efficient. The parenthetical about tool-router and the endpoint URL add some density, but each part contributes usage or content context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With zero parameters, read-only annotations, and an output schema available, the description supplies enough context for correct invocation. It explains the catalogue contents and gives the category-specific endpoint alternative, leaving no critical gap for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so parameter semantics are not a meaningful differentiator. The schema has no properties to explain, and the description does not need to document any inputs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that this tool gives a catalogue overview: categories, servers per category, tool counts, and a dedicated endpoint. The resource is specific and recognizable, though sibling differentiation is only partial because it references 'tool-router' rather than the listed siblings like search/use.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a clear alternative: use the category-specific endpoint if you only need one category, rather than going via search. It also notes the tool is free and AIsa-only, but it does not explicitly state when to call list_categories instead of search or use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
post_dataforseo_on_page_content_parsingOnPage API Content ParsingBDestructiveInspect
This endpoint allows parsing the content on any page you specify and will return the structured content of the target page, including link URLs, anchors, headings, and textual content.
Usage-based billing; Default request estimate: $0.012 USD (not a fixed price). Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare non-readOnly, non-idempotent, destructive, open-world behavior, so the safety profile is covered elsewhere. The description adds genuinely useful behavioral context by disclosing usage-based billing with an estimated cost of ~$0.012 per request. It does not explain or reconcile the destructive/non-idempotent hints (unusual for a parse operation), but with annotations present the bar is lower.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose sentence is front-loaded and the billing note is a compact, clearly delimited second block that carries real cost information rather than filler. No redundant restatement of the name or title, though the interpolated whitespace/comment markers make the formatting slightly noisy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value explanation is correctly omitted from the description. The main gap is the missing prerequisite chain (Task POST + enable_content_parsing) and the lack of guidance when a parse-result call should be chosen over sibling content tools like raw_html or microdata.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description mentions no parameters at all, neither the required task 'id'/'url' pair nor the optional 'markdown_view' toggle. Reported schema description coverage is 0% at the top level, and while the nested items do carry inline documentation, the description itself adds zero meaning beyond the schema, so it fails to compensate for the gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb+resource ('parsing the content on any page') and enumerates what is returned (link URLs, anchors, headings, textual content), which distinguishes it somewhat from generic siblings. However it never positions itself against close siblings such as post_dataforseo_on_page_raw_html, post_dataforseo_on_page_links, or post_dataforseo_on_page_microdata, so an agent gets no explicit routing signal.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no named alternative, and no prerequisite stated. Critically, the description omits the workflow requirement (a task ID from Task POST with enable_content_parsing=true), which is the actual gating condition for calling this tool. 'Any page you specify' implies more freedom than the API actually grants.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
post_dataforseo_on_page_duplicate_contentOnPage API Duplicate ContentCDestructiveInspect
This endpoint returns a list of pages that have content similar to the page specified in the request. The response also contains data related to page performance and the similarity index that indicates how similar the compared pages are.
Usage-based billing; Default request estimate: $0.012 USD (not a fixed price). Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=false and destructiveHint=true, but the description frames this purely as a read ('returns a list of pages'), which undersells that it creates a billable task. The pricing note (usage-based, ~$0.012 default) is a genuinely useful behavioral disclosure beyond the annotations, but asynchronous task-creation semantics, non-idempotency, and authorization needs are never mentioned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with the core behavior front-loaded, followed by a clear billing note. No redundancy or padding, though the pricing boilerplate is not tool-specific.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, but for a task-initiating paid endpoint the description omits the dependency on a prior submit call and the task id, and gives no sense of asynchronous completion. An agent could not call this correctly from the description alone.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is reported at 0% for the top-level `body` property, so the description bears the burden of compensating and does not: it mentions no fields at all (id, url, limit, offset, similarity threshold, tag). The schema's nested descriptions do carry some of this, but the description itself adds no parameter meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Uses a specific verb+resource: returns pages with content similar to a specified page, plus similarity index and performance data. This clearly separates it from siblings like post_dataforseo_on_page_duplicate_tags or keyword_density. It stops short of naming an alternative or scoping condition, so it is clear but not sibling-differentiating.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no prerequisites, and no mention of alternatives. Critically, it never says the required task `id` must come from the Task POST (submit) endpoint first, nor when to choose this over the other OnPage endpoints.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
post_dataforseo_on_page_duplicate_tagsOnPage API Duplicate TagsBDestructiveInspect
This endpoint returns a list of pages that contain duplicate title or description tags. The response also contains data related to page performance.
Usage-based billing; Default request estimate: $0.012 USD (not a fixed price). Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With annotations already declaring readOnlyHint=false, destructiveHint=true, openWorldHint=true and idempotentHint=false, the description's contribution is the usage-based billing estimate (~$0.012), which is real behavioral context the annotations do not provide. It does not, however, address side effects, permissions, or reconcile its 'returns a list of pages' retrieval framing with the destructive annotation, leaving an agent unclear on whether anything is mutated. Since the text never asserts read-only, this is a gap rather than a hard contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with the purpose front-loaded, followed by a clearly delimited boilerplate billing block. Nothing is wasted, though the leading zero-width characters and the detached pricing markup add minor noise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described, and the purpose plus cost note are covered. What is missing for a results-retrieval endpoint is the operational context: that it operates on an already-submitted task, pagination behavior for large result sets, and how it differs from the parallel duplicate-content retrieval.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is reported as 0% (the single top-level 'body' wrapper is undocumented), so per the rules the description should compensate — and it adds nothing about id, tag, limit, offset, or accumulator. In practice the nested item properties are richly documented (defaults, maximums, example), which carries most of the load, but the 'type' field's permitted values (duplicate_title / duplicate_description) appear only in the example, unexplained in either place.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a concrete verb and resource: it 'returns a list of pages that contain duplicate title or description tags', which is far more specific than the title 'OnPage API Duplicate Tags'. It implicitly distinguishes this from post_dataforseo_on_page_duplicate_content (content vs. tag duplication) but never names a sibling to make the boundary explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to call this endpoint versus the near-identical siblings (duplicate_content, summary, pages) and no prerequisites stated (e.g., that a task id from Task POST must already exist, that results only appear after the crawl completes). The only usage-adjacent statement is a billing estimate, which is pricing, not routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
post_dataforseo_on_page_force_stopOnPage API Force StopADestructiveInspect
This endpoint is designed to force stop the crawl process of websites you specified in a task. The execution of all the tasks associated with the IDs indicated in your request to this endpoint will be stopped. You will still be able to obtain the data on pages that have been scanned until the crawling process was stopped.
Usage-based billing; Default request estimate: $0.012 USD (not a fixed price). Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=false, but the description adds real behavioral value beyond them: it discloses that ALL tasks matching the given IDs are stopped and that already-scanned page data remains retrievable. That 'what survives the destructive action' detail is exactly the context an agent needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, front-loaded with purpose followed by the consequence. The embedded pricing marker is injected boilerplate rather than authorial padding, so the prose itself is efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no explanation, and the annotations cover the safety profile. The description supplies the operational effect and partial-data survival, leaving only parameter detail thin for a single-parameter tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With schema description coverage reported at 0%, the description must carry parameter meaning, yet it only alludes to 'the IDs indicated in your request' without stating the id format, the source of the IDs, or the 1000-item array limit. It adds essentially nothing beyond the single bare parameter name.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'force stop the crawl process of websites you specified in a task.' This clearly distinguishes it from the sibling crawl-initiation tools (post_dataforseo_on_page_submit) and the retrieval tools, so an agent can tell it apart without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It implies the use case (halting an in-flight crawl) and states the scope of effect, but never says when to prefer this over simply waiting or re-submitting, nor names any alternative. Usage is inferable rather than prescribed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
post_dataforseo_on_page_keyword_densityKeyword DensityBDestructiveInspect
This endpoint will provide you with keyword density and keyword frequency data for terms appearing on the specified website or web page. You can filter and sort the data that will be retrieved with this API call.
Usage-based billing; Default request estimate: $0.012 USD (not a fixed price). Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations carry the safety profile (openWorld, destructive, non-idempotent) and the auto-injected pricing note discloses cost, so the bar is lower. The description adds that filtering/sorting are supported, but it does not reconcile the tension between its 'provide you with data' framing and the destructive/non-idempotent hints, nor does it disclose the task-ID prerequisite the schema reveals.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two front-loaded sentences plus the auto-injected pricing block; the core purpose leads. The trailing 'You can filter and sort the data that will be retrieved with this API call' is filler that repeats the schema, but overall it is tight and readable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values needn't be described, but for a nested-filter endpoint that requires a task ID from Task POST, the description omits the entire workflow prerequisite and any link to the sibling submit/task_post step. An agent could not reliably invoke this correctly from the description alone.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The context metric reports 0% schema coverage and the top-level 'body' wrapper is indeed undocumented, but the nested item schema is actually rich (id, url, limit, filters, order_by, keyword_length all explained with examples). The description adds essentially nothing beyond 'filter and sort,' which the schema already documents far better.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: it 'provides keyword density and keyword frequency data for terms appearing on the specified website or web page.' That is clear enough for an agent to know what comes back, though it never distinguishes itself from the many sibling on_page tools (content_parsing, summary, microdata, etc.), so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The only guidance is 'You can filter and sort the data,' which is a capability statement, not a when-to-use rule. There is no mention of when to pick this over the sibling on_page endpoints, no exclusions, and no prerequisite that the schema implies (an 'id' obtained from the Task POST endpoint).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
post_dataforseo_on_page_lighthouse_live_jsonLive OnPage Lighthouse JSONCDestructiveInspect
The OnPage Lighthouse API is based on Google’s open-source Lighthouse project for measuring the quality of web pages and web apps.
Usage-based billing; Default request estimate: $0.005 USD (not a fixed price). Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, readOnlyHint=false, openWorldHint=true and idempotentHint=false, so the safety profile is covered structurally. The description adds only a usage-based billing note ($0.005 estimate) — useful cost context, but templated, and it never explains the destructive marker, the live/real-time nature of the call, or that a target URL is mandatory. Given annotations carry the safety burden, this is thin but not contradictory.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, appropriately short, with the functional statement front-loaded. The second half is boilerplate pricing markup that provides some value but is generic across the API surface rather than tailored to this tool, so it doesn't fully earn its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a live, billed, non-idempotent POST whose request object contains ~14 optional tuning fields, the description is far too thin. The output schema means return values need not be explained, but the description omits the required URL, the live-audit semantics, and any indication of what distinguishes this endpoint from its many OnPage siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single top-level 'body' parameter has no description in the schema (coverage reported at 0%) and the tool description supplies nothing about it. Although the nested property schemas are individually rich, the description does not compensate for the top-level gap — the agent gets no statement that body is an array of request objects requiring an absolute 'url'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies the underlying technology (Google's open-source Lighthouse project) and the general subject ('measuring the quality of web pages and web apps'), but it never states the tool's action on a concrete resource — no mention that it runs a live Lighthouse audit against a supplied URL. It also offers no differentiation from siblings like post_dataforseo_on_page_submit or get_dataforseo_on_page_lighthouse_audits, leaving the agent to infer the purpose from the name alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no conditions, and no named alternative. The agent is not told when a live Lighthouse run is preferable to the summary, content parsing, or other OnPage POST siblings, nor when this should be avoided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
post_dataforseo_on_page_linksLinksCDestructiveInspect
This endpoint will provide you with a list of internal and external links detected on a target website. The following link types are supported: anchor – links that point to a specific portion of a webpage; image – links that point to an image; canonical – links that point to a canonical page; meta – links with meta http-equiv=refresh ; alternate – links with link rel="alternate" pointing to an alternative version of a webpage ; redirect – links with redirect status.
Usage-based billing; Default request estimate: $0.012 USD (not a fixed price). Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses billing behavior (usage-based, ~$0.012 estimate), which is genuinely useful context beyond the annotations. However, it never explains side effects, the task-based retrieval flow, or why a POST with destructiveHint=true is being used to fetch links; the retrieval framing sits uneasily with destructiveHint=true, though the description never explicitly asserts read-only semantics, so this reads as tension rather than a hard contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded in the first sentence, and the taxonomy of link types is compact and scannable. The bulk pricing comment block is boilerplate rather than authored content, and the six link-type definitions are arguably response-content detail that an agent doesn't strictly need to invoke the tool, keeping this just short of a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described, and the description covers what the tool returns. What is missing for a correct call is the workflow prerequisite (task submission producing the id) and any guidance on pagination via limit/offset/search_after_token. Adequate but with clear gaps for a task-scoped retrieval endpoint.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description contributes nothing about parameters such as body.id, limit, offset, filters, page_from/page_to, or search_after_token. The nested schema property descriptions are unusually thorough (defaults, max values, filter syntax, examples), so the schema carries the full load and the baseline of 3 applies; the top-level body property itself is undocumented in both places.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: it returns a list of internal and external links detected on a target website, and enumerates the six supported link types. An agent can distinguish it from siblings like post_dataforseo_on_page_content_parsing or post_dataforseo_on_page_duplicate_tags by resource. It does not, however, differentiate itself explicitly against neighboring link-adjacent tools such as resources or uncrawlable_resources.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use or when-not-to-use guidance, no mention of alternatives, and no prerequisites. Critically, it never states that the required task id must come from a prior Task POST / submit call, which is the single most important invocation condition for this endpoint. The link-type list describes output content, not usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
post_dataforseo_on_page_microdataOnPage API MicrodataCDestructiveInspect
This endpoint is designed to validate structured JSON-LD data and Microdata. Using this function you will obtain microdata available on the specified page of the target website and detailed results of its validation. To use this endpoint, set the validate_micromarkup parameter to true in the POST request to OnPage API.
Usage-based billing; Default request estimate: $0.012 USD (not a fixed price). Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare destructiveHint=true, readOnlyHint=false and non-idempotent, but the description frames the tool purely as a retrieval/validation call and never explains what is mutated, that a task must already exist, or what happens on repeat calls. The injected pricing note ($0.012 estimate) adds real cost context, but the destructive/state-changing profile is undisclosed. The read-flavored wording sits in mild tension with the destructive annotation, though not an outright contradiction since a POST task endpoint can plausibly mutate state.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences with the core purpose front-loaded, so it is reasonably sized. However, the third sentence is wasted and misleading (references a nonexistent parameter), and stray zero-width characters pad the opening.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need no explanation, but for a billable, destructive-flagged POST endpoint with 0% parameter coverage the description should at minimum explain how to supply id/url. It instead describes a parameter the tool does not accept, leaving the agent unable to construct a valid call from the description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Reported schema coverage is 0% and the description adds nothing about the single `body` array — no mention that `id` (from Task POST) and `url` (from Pages) are the required fields, no note that `tag` is an optional matcher. Worse, it points at a `validate_micromarkup` parameter that is absent from the schema, which actively misdirects the agent.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb+resource pair: validate/obtain JSON-LD and Microdata for a page of a target site, which separates it from generic siblings like content_parsing or raw_html. It does not explicitly contrast with the other on_page POST tools, but the resource is concrete enough to select on.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The only usage instruction is 'set the validate_micromarkup parameter to true in the POST request to OnPage API' — a parameter that does not exist anywhere in this tool's schema. There is no when-to-use / when-to-prefer-an-alternative guidance relative to siblings such as duplicate_tags or links, leaving selection to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
post_dataforseo_on_page_non_indexableOnPage API Non-indexable PagesCDestructiveInspect
This endpoint returns a list of pages that are blocked from being indexed by Google and other search engines through robots.txt, HTTP headers, or meta tags settings.
Usage-based billing; Default request estimate: $0.012 USD (not a fixed price). Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description frames the tool as a pure retrieval ('returns a list of pages'), which signals a safe read, while the annotations declare readOnlyHint=false and destructiveHint=true. These send conflicting signals about the operation's safety profile, so the description contradicts rather than complements the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core sentence is a single, front-loaded statement of purpose with no wasted words, and it leads with the resource rather than burying it. It is slightly diluted by a leading invisible-character artifact and the boilerplate pricing block, but the substantive content is tight.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described. However, for a task-ID-driven retrieval endpoint, the description omits the prerequisite and any parameter guidance, and its retrieval framing sits awkwardly against a destructive annotation — leaving an agent with an incomplete picture even if the minimum viable purpose statement is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is reported at 0% for the sole top-level parameter (body), and the description supplies no parameter meaning whatsoever — no mention of the required task id, limit/offset paging, or the filters array. Nested items in the schema do carry documentation, but the description itself compensates for none of the gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource — it 'returns a list of pages that are blocked from being indexed' — and even enumerates the blocking mechanisms (robots.txt, HTTP headers, meta tags). This clearly separates it in concept from the other post_dataforseo_on_page_* siblings (raw_html, links, duplicate_tags, etc.), though it never names an alternative explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use or when-not-to-use guidance. Critically, it does not mention the prerequisite that a task ID from the Task POST endpoint must be supplied, nor when this retrieval endpoint should be preferred over siblings like uncrawlable_resources or summary. The only contextual content is a billing note, not usage direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
post_dataforseo_on_page_raw_htmlOnPage API Raw HTMLCDestructiveInspect
This endpoint returns the HTML of a page you indicate in the request.
Usage-based billing; Default request estimate: $0.012 USD (not a fixed price). Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description describes a retrieval ('returns the HTML of a page') while the annotations declare readOnlyHint=false and destructiveHint=true, so the safety profile an agent receives is internally inconsistent. The only added behavioral context is the billing estimate (~$0.012), which does not resolve the destructive/read conflict.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The visible text is tight, one purpose sentence plus a short pricing note, and the purpose is front-loaded. It is marred only by leading zero-width characters and the injected boilerplate pricing comment block, which are formatting noise rather than padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained. However, for a task-scoped endpoint the description should have flagged the dependency on a previously created task and the billed, non-idempotent nature of the call, which it leaves to the schema or nowhere at all.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds nothing about the single body parameter (task id / page url). The nested schema text does fully document both required fields, including that url is optional when Instant Pages was used, so the schema carries the semantics; a 3 baseline is appropriate despite the reported 0% top-level coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a concrete verb and resource: it 'returns the HTML of a page you indicate in the request,' matching the tool name (raw_html). That is enough for an agent to know what it does, but it never distinguishes this endpoint from the many adjacent OnPage endpoints (content_parsing, microdata, resources), so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no when-not-to-use, and no mention of alternative siblings such as post_dataforseo_on_page_content_parsing. The description also omits the critical prerequisite that a task must already exist (via Task POST) before this call is meaningful, even though the schema hints at it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
post_dataforseo_on_page_resourcesOnPage API ResourcesBDestructiveInspect
This endpoint will provide you with a list of resources, including images, scripts, stylesheets, and broken elements. You will get a detailed overview of every resource found on the crawled pages.
Usage-based billing; Default request estimate: $0.012 USD (not a fixed price). Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare the safety profile (readOnlyHint=false, destructiveHint=true, idempotentHint=false, openWorldHint=true), so the bar is lower. The description adds one genuinely useful non-annotation fact: usage-based billing with a $0.012 estimate and the caveat that final pricing may differ. It says nothing about rate limits, task prerequisites, or the practical tension between its 'provide you with a list' phrasing and the destructiveHint=true annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two front-loaded sentences state the capability first, and the billing block is clearly delimited and short. Nothing is redundant, though the sentence about 'detailed overview of every resource' largely restates the first.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value explanation is not required. However, for a tool whose only input is a body array keyed on a task ID from another endpoint, the description omits what an agent most needs: that a task must already exist and that this is the resource-audit step of the OnPage workflow.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description offers zero parameter guidance (no mention of id, url, limit, offset, filters, order_by, or search_after_token). Top-level schema description coverage is reported at 0%, and the outer 'body' wrapper carries no description at all, so the agent must rely entirely on deeply nested schema prose rather than on the description to compensate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete verb and resource plainly: it returns a list of page resources — images, scripts, stylesheets, broken elements. An agent can distinguish it from siblings like links or content_parsing on the resource types named. It does not, however, explicitly separate itself from the close sibling post_dataforseo_on_page_uncrawlable_resources, which also concerns resources.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this over the many sibling on_page POST endpoints, and no prerequisites are given. Critically, nothing in the description tells the agent that this endpoint consumes an existing task ID produced by the Task POST (submit) endpoint, even though that is the required input.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
post_dataforseo_on_page_submitSetting OnPage TasksCDestructiveInspect
OnPage API checks websites for 60+ customizable on-page parameters defines and displays all found flaws and opportunities for optimization so that you can easily fix them. It checks meta tags, duplicate content, image tags, response codes, and other parameters on every page. You can find the full list of OnPage API check-up parameters in the Pages section.
Usage-based billing; Default request estimate: $0.003 USD (not a fixed price). Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the safety profile (readOnlyHint=false, destructiveHint=true, openWorldHint=true, idempotentHint=false), so the description does not need to restate that this mutates/creates something. It does add genuinely useful context by disclosing usage-based billing with a $0.003 default estimate, but it omits the operational traits that matter most here: that the task is queued asynchronously, that it returns an id/tag to poll, and that per-parameter features (load_resources, enable_javascript, enable_browser_rendering) carry extra charges.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The text is short and front-loaded with no padding, and the billing note is clearly delimited. However, the opening two sentences are generic API marketing copy that does not earn its place against the tool's actual job of submitting a task, so brevity comes at the cost of relevance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a complex task-submission tool with a very large nested schema and an output schema (so return values need not be explained). The description still leaves the essentials unstated: that submitting queues an asynchronous job, how to track it (tag/pingback_url), and that downstream on_page endpoints consume the results. For a task-creation endpoint, that is a significant omission.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single top-level `body` parameter carries 0% description coverage, and the description says nothing about it — no mention that `target` and `max_crawl_pages` are the meaningful required inputs, no hint about the array-of-task-object shape, no guidance on which of the ~45 crawl options matter. The nested schema is extremely detailed, but per the low-coverage rule the description is expected to compensate and does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explains what the OnPage API family does ('checks websites for 60+ customizable on-page parameters') but never states what this specific tool does — that it submits/creates an asynchronous crawl task. The verb 'submit' appears only in the tool name, and nothing distinguishes it from the ~15 sibling post_dataforseo_on_page_* endpoints that operate on the results of this task.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance is given. It does not say this is the entry point that must run before post_dataforseo_on_page_raw_html, post_dataforseo_on_page_keyword_density, post_dataforseo_on_page_summary, etc., nor does it point to the 'live Instant Pages endpoint' or any alternative the way a routing-aware description would.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
post_dataforseo_on_page_uncrawlable_resourcesUncrawlable ResourcesBDestructiveInspect
This endpoint returns a list of resources detected on the target website that could not be crawled due to a content type inconsistency. A resource is considered uncrawlable when the content type returned in the server response does not match the content type expected based on how the resource is referenced in the page HTML.
Usage-based billing; Default request estimate: $0.012 USD (not a fixed price). Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the safety profile (readOnlyHint=false, destructiveHint=true, openWorldHint=true, idempotentHint=false), lowering the bar. The description adds genuine domain context — how uncrawlability is determined via content-type mismatch — but says nothing about the retrieval mechanics (task dependency, paginated result sets). There is also unacknowledged tension: the description frames this as 'returns a list', while the annotations warn of destructive behavior, and the text does not reconcile that.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core content is two tight sentences that are front-loaded with the purpose before the definitional detail, and there is no filler. The appended usage-based billing block is template boilerplate that is useful for cost awareness but is not part of the tool's semantics.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and the concept is defined well enough for identification. However, for a POST endpoint with filter/sort/pagination parameters and a destructive annotation, the description omits prerequisites (prior task creation), the mutation-versus-read question, and any usage context, leaving meaningful gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is reported at 0% for the single top-level 'body' parameter, so the description carries the burden of compensating — and it contributes nothing about id, limit, offset, filters, or order_by. It never mentions that a task id is required or that results are filterable/sortable, leaving the caller entirely dependent on the nested schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — 'returns a list of resources detected on the target website' — and then defines the exact qualifying condition (server content type does not match the type implied by the page HTML). That definition cleanly separates it from the sibling post_dataforseo_on_page_resources, which returns all resources, so an agent can choose between them without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains the concept of 'uncrawlable' but gives no when-to-use guidance, no prerequisite that an id must first come from the Task POST endpoint, and no comparison to alternative siblings such as post_dataforseo_on_page_resources or post_dataforseo_on_page_non_indexable. A caller learns what the data means but not when to reach for this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
post_dataforseo_on_page_waterfallOnPage API WaterfallCDestructiveInspect
This endpoint is designed to provide you with the page speed insights. Using this function you can get detailed information about the page loading time, time to secure connection, the time it takes to load page resources, and so on.
Usage-based billing; Default request estimate: $0.012 USD (not a fixed price). Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, readOnlyHint=false, openWorldHint=true and idempotentHint=false, so the safety profile is largely carried by structured data. The description adds one genuinely new piece of behavioral context – usage-based billing at roughly $0.012 per request – which explains why a 'provide insights' call is flagged as non-read-only. It does not, however, explain the destructive flag, rate limits, or auth requirements, so the added value is moderate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loaded, but the opening is padded ('This endpoint is designed to provide you with') and closes with vague filler ('and so on'). The pricing block is well-delimited and useful, but the prose itself could be tightened.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be described, but for a POST task-style endpoint with a nested oneOf body array and a destructive annotation, the description omits the task-ID prerequisite, the meaning of the body payload, and any routing against the many sibling OnPage tools. It is not complete enough for confident invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is reported as 0% at the top level: the single 'body' array parameter is entirely unexplained in the description, and no mention is made of the required id/url fields or the optional tag. With such low coverage the description should compensate, and it does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear purpose – page-speed/timing insight for a URL – and enumerates the payload concretely (page loading time, time to secure connection, resource load times). It does not differentiate this 'waterfall' timing endpoint from siblings such as get_dataforseo_on_page_summary, post_dataforseo_on_page_resources, or the lighthouse endpoints, so the agent cannot tell from the text alone which OnPage tool to pick.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no alternatives named, and no prerequisites. Crucially, it never says the endpoint requires task IDs obtained from the Task POST endpoint, even though that is a hard operational dependency.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
searchSearch AIsa tools and agent-ready plansARead-onlyInspect
Discover AIsa tools and Plans for external data or actions. Skip tasks that only need supplied content or general knowledge. For multi-step tasks, search the full goal before decomposing it. Use English; put identifiers in known_fields. If has_full_schema=false, call batch_get_schema. Next call batch_quote, not batch_use. Do not search for standalone rewriting, translation, summarization, formatting, or calculations on supplied content. For one capability, use an atomic query. Select a matching capability, date window, and metric. A Plan may cover only part of the task; assess its purpose and follow next_steps_guidance.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of additional direct tool candidates. | |
| query | Yes | Natural-language capability or task to discover. | |
| category | No | Restrict retrieval to one category. Omit to search everything. (AIsa-only: tool-router has no equivalent.) | |
| session_id | No | Reuse the session_id returned by Search in all subsequent tool calls for this task. If omitted, a new session is created. | |
| known_fields | No | Known values such as ticker, URL, provider, or identifier that improve retrieval. | |
| provider_filters | No | Optional exact catalog provider keys used to narrow retrieval (for example similarweb). Do not use display brands. Omit this field if the exact key is unknown. |
Output Schema
| Name | Required | Description |
|---|---|---|
| plan | No | |
| tools | Yes | |
| search_id | Yes | |
| session_id | Yes | Reuse the session_id returned by Search in all subsequent tool calls for this task. If omitted, a new session is created. |
| retrieval_mode | No | |
| next_steps_guidance | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds workflow behavior the annotations cannot: the has_full_schema flag gates a required batch_get_schema call, and the next step after search is batch_quote, not batch_use. It stops short of disclosing retrieval limits or catalog breadth that would push it to a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a dense run of imperatives rather than flowing prose, but each sentence carries a distinct rule (scope, language, workflow branch, negative cases, result interpretation) and the most important scoping guidance is front-loaded. Slightly more compression would help.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description need not explain return values, and it correctly avoids doing so while still referencing the output fields that drive the workflow (has_full_schema, next_steps_guidance). A mutation-free, well-annotated search tool is adequately covered, though catalog scope ('AIsa-only', no external providers) could be stated more explicitly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the structured baseline is 3. The description adds genuine meaning beyond the schema by telling the agent to write the query in English and to place tickers, URLs, providers, or identifiers in known_fields, which is non-obvious routing guidance for a nested free-form object.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource: 'Discover AIsa tools and Plans for external data or actions.' It also separates this discovery step from the sibling execution tools by naming batch_get_schema, batch_quote, and batch_use and stating when each follows, so an agent can place it in the workflow without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit when-to-use ('tasks needing external data or actions'), when-not ('tasks that only need supplied content or general knowledge'; no standalone rewriting, translation, summarization, formatting, or calculations), and named alternatives (batch_get_schema when has_full_schema=false, batch_quote rather than batch_use). It also specifies query language and atomic-query style, leaving little to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
useRun an AIsa operationCDestructiveInspect
deprecated, use batch_use instead
| Name | Required | Description | Default |
|---|---|---|---|
| arguments | No | Arguments matching input_schema / arguments_schema | |
| search_id | No | search_id from the search that found this operation | |
| operation_id | Yes | operation_id as returned by search | |
| max_price_usd | No | Refuse the call before any spend if its quoted price is above this many USD |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=true, and openWorldHint=true, so the agent knows this is a state-changing, open-world operation. The description adds only the deprecation status and says nothing about what gets mutated, spend behavior (despite a max_price_usd param), or authorization needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single clause with zero waste; the deprecation notice and the replacement are front-loaded. It is terse by design for a deprecated endpoint, though it is under-specified rather than optimally efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Has an output schema and annotations, which reduces the burden, but a 4-parameter operation tool with a deprecation notice gives no information about what it executes or whether it remains functional. For an agent deciding between this and batch_use, the description is thin.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all four parameters (operation_id, arguments, search_id, max_price_usd) are already documented in the schema. The description adds no parameter meaning on top, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description never states what the tool does — no verb or resource. It only labels the tool as deprecated and points to a replacement, leaving the actual capability ('Run an AIsa operation' from the title) unexplained. An agent must infer the purpose from the title and schema alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly routes the agent to the alternative ('use batch_use instead'), which is exactly the guidance needed for a deprecated tool. It doesn't explain when, if ever, this tool should still be called (e.g., during a migration window), so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
16 tool updates
- Added
account - Removed
get_details - Changed
post_dataforseo_on_page_content_parsing1 field changed- changed
Input schema / properties / body / items / oneOfPrevious value: -[ - { - "example": [ - { - "id": "11161551-1535-0216-0000-500b3f307f92", - "url": "https://dataforseo.com/blog/a-versatile-alternative-to-google-trends-exploring-the-power-of-dataforseo-trends-api" - } - ], - "properties": { - "id": { - "description": "<em>ID of the task</em><br><strong>required field</strong><br>you can get this ID in the response of the <a href=\"/v3/on_page/task_post/\">Task POST</a> endpoint<br><strong>note:</strong> the <code>enable_content_parsing</code> parameter in the POST request must be set to <code>true</code><br>example:<br><code>\"07131248-1535-0216-1000-17384017ad04\"</code>", - "type": "string" - }, - "markdown_view": { - "description": "<em>return page content as markdown</em><br>optional field<br>if set to <code>true</code>, the markdown-formatted content of the page will be returned in the <code>page_as_markdown</code> field of the response;<br>default value: <code>false</code>", - "type": [ - "boolean", - "null" - ] - }, - "url": { - "description": "<em>URL of the content to parse</em><br><strong>required field</strong><br>URL of the page to parse<br>example:<br>`https://dataforseo.com/blog/a-versatile-alternative-to-google-trends-exploring-the-power-of-dataforseo-trends-api`", - "type": "string" - } - }, - "type": "object" - } -]New value: +[ + { + "properties": { + "id": { + "description": "<em>ID of the task</em><br><strong>required field</strong><br>you can get this ID in the response of the <a href=\"/v3/on_page/task_post/\">Task POST</a> endpoint<br><strong>note:</strong> the <code>enable_content_parsing</code> parameter in the POST request must be set to <code>true</code><br>example:<br><code>\"07131248-1535-0216-1000-17384017ad04\"</code>", + "type": "string" + }, + "markdown_view": { + "description": "<em>return page content as markdown</em><br>optional field<br>if set to <code>true</code>, the markdown-formatted content of the page will be returned in the <code>page_as_markdown</code> field of the response;<br>default value: <code>false</code>", + "type": [ + "boolean", + "null" + ] + }, + "url": { + "description": "<em>URL of the content to parse</em><br><strong>required field</strong><br>URL of the page to parse<br>example:<br>`https://dataforseo.com/blog/a-versatile-alternative-to-google-trends-exploring-the-power-of-dataforseo-trends-api`", + "type": "string" + } + }, + "type": "object" + } +]
- Changed
post_dataforseo_on_page_duplicate_content1 field changed- changed
Input schema / properties / body / items / oneOfPrevious value: -[ - { - "example": [ - { - "id": "07281559-0695-0216-0000-c269be8b7592", - "url": "https://www.etsy.com/" - } - ], - "properties": { - "id": { - "description": "<em>ID of the task</em><br><strong>required field</strong><br>you can get this ID in the response of the <a href=\"https://docs.dataforseo.com/v3/on_page/task_post/\">Task POST</a> endpoint<br>example:<br>\"07131248-1535-0216-1000-17384017ad04\"", - "type": "string" - }, - "limit": { - "description": "<em>the maximum number of returned pages</em><br>optional field<br>default value: <code>100</code><br>maximum value: <code>1000</code>", - "type": [ - "integer", - "null" - ] - }, - "offset": { - "description": "<em>offset in the results array of returned pages</em><br>optional field<br>default value: <code>0</code><br>maximum value: <code>2000000</code><br>if you specify the <code>10</code> value, the first ten pages in the results array will be omitted and the data will be provided for the successive pages", - "type": [ - "integer", - "null" - ] - }, - "similarity": { - "description": "<em>content similarity score</em><br>by default, the content is considered duplicate if the value is greater than or equals <code>6</code><br>you can specify any similarity score in the 0-to-10 range", - "type": [ - "integer", - "null" - ] - }, - "tag": { - "description": "<em>user-defined task identifier</em><br>optional field<br><em>the character limit is 255</em><br>you can use this parameter to identify the task and match it with the result<br>you will find the specified <code>tag</code> value in the <code>data</code> object of the response", - "type": [ - "string", - "null" - ] - }, - "url": { - "description": "<em>page URL</em><br><strong>required field</strong><br>specify the initial page you want to receive duplicate content for", - "type": "string" - } - }, - "type": "object" - } -]New value: +[ + { + "properties": { + "id": { + "description": "<em>ID of the task</em><br><strong>required field</strong><br>you can get this ID in the response of the <a href=\"https://docs.dataforseo.com/v3/on_page/task_post/\">Task POST</a> endpoint<br>example:<br>\"07131248-1535-0216-1000-17384017ad04\"", + "type": "string" + }, + "limit": { + "description": "<em>the maximum number of returned pages</em><br>optional field<br>default value: <code>100</code><br>maximum value: <code>1000</code>", + "type": [ + "integer", + "null" + ] + }, + "offset": { + "description": "<em>offset in the results array of returned pages</em><br>optional field<br>default value: <code>0</code><br>maximum value: <code>2000000</code><br>if you specify the <code>10</code> value, the first ten pages in the results array will be omitted and the data will be provided for the successive pages", + "type": [ + "integer", + "null" + ] + }, + "similarity": { + "description": "<em>content similarity score</em><br>by default, the content is considered duplicate if the value is greater than or equals <code>6</code><br>you can specify any similarity score in the 0-to-10 range", + "type": [ + "integer", + "null" + ] + }, + "tag": { + "description": "<em>user-defined task identifier</em><br>optional field<br><em>the character limit is 255</em><br>you can use this parameter to identify the task and match it with the result<br>you will find the specified <code>tag</code> value in the <code>data</code> object of the response", + "type": [ + "string", + "null" + ] + }, + "url": { + "description": "<em>page URL</em><br><strong>required field</strong><br>specify the initial page you want to receive duplicate content for", + "type": "string" + } + }, + "type": "object" + } +]
- Changed
post_dataforseo_on_page_duplicate_tags1 field changed- changed
Input schema / properties / body / items / oneOfPrevious value: -[ - { - "example": [ - { - "id": "07281559-0695-0216-0000-c269be8b7592", - "limit": 10, - "type": "duplicate_description" - } - ], - "properties": { - "accumulator": { - "description": "<em>tag value</em><br>optional field<br>specify a title or description here if you want to receive a list of duplicate pages that contains this tag", - "type": [ - "string", - "null" - ] - }, - "id": { - "description": "<em>ID of the task</em><br><strong>required field</strong><br>you can get this ID in the response of the <a href=\"https://docs.dataforseo.com/v3/on_page/task_post/\">Task POST</a> endpoint<br>example:<br>\"07131248-1535-0216-1000-17384017ad04\"", - "type": "string" - }, - "limit": { - "description": "<em>the maximum number of returned pages</em><br>optional field<br>default value: <code>100</code><br>maximum value: <code>1000</code>", - "type": [ - "integer", - "null" - ] - }, - "offset": { - "description": "<em>offset in the results array of returned pages</em><br>optional field<br>default value: <code>0</code><br>maximum value: <code>2000000</code><br>if you specify the <code>10</code> value, the first ten pages in the results array will be omitted and the data will be provided for the successive pages", - "type": [ - "integer", - "null" - ] - }, - "tag": { - "description": "<em>user-defined task identifier</em><br>optional field<br><em>the character limit is 255</em><br>you can use this parameter to identify the task and match it with the result<br>you will find the specified <code>tag</code> value in the <code>data</code> object of the response", - "type": [ - "string", - "null" - ] - }, - "type": { - "description": "type of element", - "type": "string" - } - }, - "type": "object" - } -]New value: +[ + { + "properties": { + "accumulator": { + "description": "<em>tag value</em><br>optional field<br>specify a title or description here if you want to receive a list of duplicate pages that contains this tag", + "type": [ + "string", + "null" + ] + }, + "id": { + "description": "<em>ID of the task</em><br><strong>required field</strong><br>you can get this ID in the response of the <a href=\"https://docs.dataforseo.com/v3/on_page/task_post/\">Task POST</a> endpoint<br>example:<br>\"07131248-1535-0216-1000-17384017ad04\"", + "type": "string" + }, + "limit": { + "description": "<em>the maximum number of returned pages</em><br>optional field<br>default value: <code>100</code><br>maximum value: <code>1000</code>", + "type": [ + "integer", + "null" + ] + }, + "offset": { + "description": "<em>offset in the results array of returned pages</em><br>optional field<br>default value: <code>0</code><br>maximum value: <code>2000000</code><br>if you specify the <code>10</code> value, the first ten pages in the results array will be omitted and the data will be provided for the successive pages", + "type": [ + "integer", + "null" + ] + }, + "tag": { + "description": "<em>user-defined task identifier</em><br>optional field<br><em>the character limit is 255</em><br>you can use this parameter to identify the task and match it with the result<br>you will find the specified <code>tag</code> value in the <code>data</code> object of the response", + "type": [ + "string", + "null" + ] + }, + "type": { + "description": "type of element", + "type": "string" + } + }, + "type": "object" + } +]
- Changed
post_dataforseo_on_page_force_stop1 field changed- changed
Input schema / properties / body / items / oneOfPrevious value: -[ - { - "example": [ - { - "id": "08121600-1535-0216-0000-37b4c7a34453" - }, - { - "id": "08121600-1535-0216-0000-d6a5000b6897" - } - ], - "properties": { - "id": { - "description": "<em>ID of the task</em><br><strong>required field</strong><br>you can get this ID in the response of the <a href=\"/v3/on_page/task_post/\">Task POST</a> endpoint<br>example:<br>\"07131248-1535-0216-1000-17384017ad04\"<p><strong>note</strong>: you can set up to 1000 <code>id</code> values as separate objects in the POST array", - "type": "string" - } - }, - "type": "object" - } -]New value: +[ + { + "properties": { + "id": { + "description": "<em>ID of the task</em><br><strong>required field</strong><br>you can get this ID in the response of the <a href=\"/v3/on_page/task_post/\">Task POST</a> endpoint<br>example:<br>\"07131248-1535-0216-1000-17384017ad04\"<p><strong>note</strong>: you can set up to 1000 <code>id</code> values as separate objects in the POST array", + "type": "string" + } + }, + "type": "object" + } +]
- Changed
post_dataforseo_on_page_keyword_density3 fields changed- added
Input schema / $defsAdded value: +{ + "Provider0A3E90081762_AisaDataforseoFilterJsonValue": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "number" + }, + { + "type": "boolean" + }, + { + "additionalProperties": { + "$ref": "#/$defs/Provider0A3E90081762_AisaDataforseoFilterJsonValue" + }, + "type": [ + "object", + "null" + ] + }, + { + "items": { + "$ref": "#/$defs/Provider0A3E90081762_AisaDataforseoFilterJsonValue" + }, + "type": "array" + } + ], + "description": "JSON representation of filter values and nested expressions. Field names, operators, condition counts and operand compatibility remain provider-validated as documented for each endpoint; this is not a complete filter-language validator." + } +} - added
Input schema / properties / body / items / anyOfAdded value: +[ + { + "properties": { + "filters": { + "description": "<em>array of results filtering parameters</em><br>optional field<br><strong>you can add several filters at once (8 filters maximum)</strong><br>you should set a logical operator <code>and</code>, <code>or</code> between the conditions<br>the following operators are supported:<br><code>regex</code>, <code>not_regex</code>, <code>=</code>, <code><></code>, <code>in</code>, <code>not_in</code>, <code>like</code>, <code>not_like</code><br>you can use the <code>%</code> operator with <code>like</code> and <code>not_like</code> to match any string of zero or more characters<br>example:<br><code>[\"keyword\",\"=\",\"%seo%\"]</code><p><code>[[\"keyword\",\"=\",\"%seo%\"],<br>\"and\",<br>[\"frequency\",\"<\",\"6\"]]</code><p><code>[[\"keyword\",\"not_like\",\"%seo%\"],<br>\"and\",<br>[[\"frequency\",\">\",\"6\"],\"or\",[\"density\",\">\",\"0.02\"]]]</code><p>The full list of possible filters is available <a href=\"/v3/on_page/filters_and_thresholds/?bash\" target=\"_blank\" rel=\"noopener noreferrer\">by this link.</a>", + "items": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "number" + }, + { + "type": "boolean" + }, + { + "additionalProperties": { + "$ref": "#/$defs/Provider0A3E90081762_AisaDataforseoFilterJsonValue" + }, + "type": [ + "object", + "null" + ] + }, + { + "items": { + "$ref": "#/$defs/Provider0A3E90081762_AisaDataforseoFilterJsonValue" + }, + "type": "array" + } + ], + "description": "JSON representation of filter values and nested expressions. Field names, operators, condition counts and operand compatibility remain provider-validated as documented for each endpoint; this is not a complete filter-language validator." + }, + "type": [ + "array", + "null" + ] + }, + "id": { + "description": "<em>ID of the task</em><br><strong>required field</strong><br>you can get this ID in the response of the <a href=\"/v3/on_page/task_post/\">Task POST</a> endpoint<br>example:<br>\"07131248-1535-0216-1000-17384017ad04\"", + "type": "string" + }, + "keyword_length": { + "description": "<em>number of words for a keyword</em><br><strong>required field</strong><br>possible values:<br><code>1</code>, <code>2</code>, <code>3</code>, <code>4</code>, <code>5</code>", + "type": "integer" + }, + "limit": { + "description": "<em>the maximum number of returned keywords</em><br>optional field<br>default value: <code>100</code><br>maximum value: <code>1000</code>", + "type": [ + "integer", + "null" + ] + }, + "order_by": { + "description": "<em>results sorting rules</em><br>optional field<br>you can use the same values as in the <code>filters</code> array to sort the results<br>possible sorting types:<br><code>asc</code> - results will be sorted in the ascending order<br><code>desc</code> - results will be sorted in the descending order<br>you should use a comma to set up a sorting type<br>example:<br><code>[\"frequency,desc\"]</code><br><strong>note that you can set no more than three sorting rules in a single request</strong><br>you should use a comma to separate several sorting rules<br>example:<br><code>[\"keyword,asc\",\"frequency,desc\"]</code>", + "items": { + "type": "string" + }, + "type": [ + "array", + "null" + ] + }, + "tag": { + "description": "<em>user-defined task identifier</em><br>optional field<br><em>the character limit is 255</em><br>you can use this parameter to identify the task and match it with the result<br>you will find the specified <code>tag</code> value in the <code>data</code> object of the response", + "type": [ + "string", + "null" + ] + }, + "url": { + "description": "<em>page URL</em><br>optional field<br><strong>if you do not specify a page here, the results will be provided for the whole website</strong><br>if you use this field, the API response will contain only keywords from the specified page<br>a page should be specified with absolute URL (including <code>http://</code> or <code>https://</code>)", + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + } +] - removed
Input schema / properties / body / items / oneOfRemoved value: -[ - { - "example": [ - { - "filters": [ - "frequency", - ">", - 5 - ], - "id": "09101923-1535-0216-0000-2389a8854b70", - "keyword_length": 2, - "url": "https://dataforseo.com/" - } - ], - "properties": { - "filters": { - "description": "<em>array of results filtering parameters</em><br>optional field<br><strong>you can add several filters at once (8 filters maximum)</strong><br>you should set a logical operator <code>and</code>, <code>or</code> between the conditions<br>the following operators are supported:<br><code>regex</code>, <code>not_regex</code>, <code>=</code>, <code><></code>, <code>in</code>, <code>not_in</code>, <code>like</code>, <code>not_like</code><br>you can use the <code>%</code> operator with <code>like</code> and <code>not_like</code> to match any string of zero or more characters<br>example:<br><code>[\"keyword\",\"=\",\"%seo%\"]</code><p><code>[[\"keyword\",\"=\",\"%seo%\"],<br>\"and\",<br>[\"frequency\",\"<\",\"6\"]]</code><p><code>[[\"keyword\",\"not_like\",\"%seo%\"],<br>\"and\",<br>[[\"frequency\",\">\",\"6\"],\"or\",[\"density\",\">\",\"0.02\"]]]</code><p>The full list of possible filters is available <a href=\"/v3/on_page/filters_and_thresholds/?bash\" target=\"_blank\" rel=\"noopener noreferrer\">by this link.</a>", - "items": { - "type": [ - "object", - "null" - ] - }, - "type": [ - "array", - "null" - ] - }, - "id": { - "description": "<em>ID of the task</em><br><strong>required field</strong><br>you can get this ID in the response of the <a href=\"/v3/on_page/task_post/\">Task POST</a> endpoint<br>example:<br>\"07131248-1535-0216-1000-17384017ad04\"", - "type": "string" - }, - "keyword_length": { - "description": "<em>number of words for a keyword</em><br><strong>required field</strong><br>possible values:<br><code>1</code>, <code>2</code>, <code>3</code>, <code>4</code>, <code>5</code>", - "type": "integer" - }, - "limit": { - "description": "<em>the maximum number of returned keywords</em><br>optional field<br>default value: <code>100</code><br>maximum value: <code>1000</code>", - "type": [ - "integer", - "null" - ] - }, - "order_by": { - "description": "<em>results sorting rules</em><br>optional field<br>you can use the same values as in the <code>filters</code> array to sort the results<br>possible sorting types:<br><code>asc</code> - results will be sorted in the ascending order<br><code>desc</code> - results will be sorted in the descending order<br>you should use a comma to set up a sorting type<br>example:<br><code>[\"frequency,desc\"]</code><br><strong>note that you can set no more than three sorting rules in a single request</strong><br>you should use a comma to separate several sorting rules<br>example:<br><code>[\"keyword,asc\",\"frequency,desc\"]</code>", - "items": { - "type": "string" - }, - "type": [ - "array", - "null" - ] - }, - "tag": { - "description": "<em>user-defined task identifier</em><br>optional field<br><em>the character limit is 255</em><br>you can use this parameter to identify the task and match it with the result<br>you will find the specified <code>tag</code> value in the <code>data</code> object of the response", - "type": [ - "string", - "null" - ] - }, - "url": { - "description": "<em>page URL</em><br>optional field<br><strong>if you do not specify a page here, the results will be provided for the whole website</strong><br>if you use this field, the API response will contain only keywords from the specified page<br>a page should be specified with absolute URL (including <code>http://</code> or <code>https://</code>)", - "type": [ - "string", - "null" - ] - } - }, - "type": "object" - } -]
- Changed
post_dataforseo_on_page_lighthouse_live_json1 field changed- changed
Input schema / properties / body / items / oneOfPrevious value: -[ - { - "example": [ - { - "for_mobile": true, - "tag": "some_string_123", - "url": "https://dataforseo.com" - } - ], - "properties": { - "audits": { - "description": "<em>Lighthouse audits</em><br>optional field<br>audits are individual tests Lighthouse runs for each specific feature/optimization/metric to produce a numeric score (<a href=\"https://github.com/GoogleChrome/lighthouse/blob/master/docs/architecture.md#components--terminology\" rel=\"noopener noreferrer\" target=\"_blank\">see official definition</a>); <p><strong>if you ignore this field, we will return data for all audits</strong>;<br>use this field to get data for specific audits you indicate here;<p><strong>Note:</strong> that some audits do not belong to a specific category and are stand-alone page quality measurements;<p>in general, there can be several use cases:<p>1. if you ignore <code>categories</code>, you can use this field to get data for the specified audits only<br>for example, if you ignore <code>\"categories\"</code> and specify <code>\"audits\": [\"metrics/cumulative-layout-shift\",\"metrics/largest-contentful-paint\",\"metrics/total-blocking-time\"]</code>, you will get data only for these audits<p>2. if you specify a category, you can use this field to additionally receive audits that do not belong to the category(-ies) you specified<br>for example, if you specify <code>\"categories\": [\"seo\"]</code> and <code>\"audits\": [\"metrics/cumulative-layout-shift\",\"metrics/largest-contentful-paint\",\"metrics/total-blocking-time\"]</code>, you will get only these audits under \"performance\" and all audits under \"seo\"<p>you can get <a href=\"/v3/on_page/lighthouse/audits/\">the full list of possible audits here</a>", - "items": { - "type": "string" - }, - "type": [ - "array", - "null" - ] - }, - "browser_cpu_throttling_multiplier": { - "description": "<em>browser CPU throttling multiplier</em><br><strong>required if <code>browser_network_throttling_method</code> is set to <code>devtools</code>;</strong><br>set the CPU throttling multiplier to simulate device performance conditions during the Lighthouse audit;<br>can be specified within the following range: <code>1–4</code>;<br><strong>Note:</strong> this parameter is applied only when <code>browser_network_throttling_method</code> is set to <code>devtools</code>;", - "type": [ - "number", - "null" - ] - }, - "browser_network_throttling": { - "description": "<em>browser network throttling</em><br><strong>required if <code>browser_network_throttling_method</code> is set to <code>devtools</code>;</strong><br>set the network throttling profile to simulate connection speed conditions during the Lighthouse audit;<br>possible values: <code>no_throttling</code>, <code>fast_4g</code>, <code>slow_4g</code>, <code>regular_3g</code>, <code>pc</code>;<br><strong>Note:</strong> this parameter is applied only when <code>browser_network_throttling_method</code> is set to <code>devtools</code>;", - "type": [ - "string", - "null" - ] - }, - "browser_network_throttling_method": { - "description": "<em>browser network throttling method</em><br>optional field<br>defines the method used to apply throttling during the Lighthouse audit;<br>possible vaules:<br><code>simulate</code> - calculates estimated performance metrics without applying explicit throttling;<br><code>devtools</code> - applies the throttling settings specified in <code>browser_network_throttling</code> and <code>browser_cpu_throttling_multiplier</code>;<br><code>provided</code> - uses the network conditions of the crawling environment;", - "type": [ - "string", - "null" - ] - }, - "browser_screen_height": { - "description": "<em>browser screen height</em><br>optional field<br>set the screen height of the browser used for the Lighthouse audit to emulate a specific device;<br>can be specified within the following range: <code>240–9999</code>;", - "type": [ - "integer", - "null" - ] - }, - "browser_screen_scale_factor": { - "description": "<em>browser screen scale factor</em><br>optional field<br>set the device pixel ratio of the browser used for the Lighthouse audit;<br>can be specified within the following range: <code>0.5–3</code>;", - "type": [ - "number", - "null" - ] - }, - "browser_screen_width": { - "description": "<em>browser screen width</em><br>optional field<br>set the screen width of the browser used for the Lighthouse audit to emulate a specific device;<br>can be specified within the following range: <code>240–9999</code>;", - "format": "int64", - "type": [ - "integer", - "null" - ] - }, - "categories": { - "description": "<em>categories of Lighthouse audits</em><br>optional field<br>each category is a collection of audits and audit groups that applies weighting and scoring to the section (<a href=\"https://github.com/GoogleChrome/lighthouse/blob/master/docs/architecture.md#auditreport-terminology\" rel=\"noopener noreferrer\" target=\"_blank\">see official definition</a>)<p><strong>if you ignore this field, we will return data for all categories unless you specify <code>audits</code></strong><br>use this field to get data for specific categories you indicate here<p>possible values:<br><code>seo</code>, <code>performance</code>, <code>best_practices</code>, <code>accessibility</code>", - "items": { - "type": "string" - }, - "type": [ - "array", - "null" - ] - }, - "custom_user_agent": { - "description": "<em>custom user agent</em><br>optional field<br>specify the custom user agent used by the browser when running the Lighthouse audit;<br>can be specified with up to 254 characters;", - "type": [ - "string", - "null" - ] - }, - "for_mobile": { - "description": "<em>applies mobile emulation</em><br>optional field<br>if set to <code>true</code>, Lighthouse will use mobile device and screen emulation to test the page against mobile environment<br>if set to <code>false</code>, the results will be provided for desktop<br>default value: <code>false</code>", - "type": [ - "boolean", - "null" - ] - }, - "language_code": { - "description": "<em>lighthouse language code</em><br>optional field<br>you can receive the list of available languages of the search engine with their <code>language_code</code> by making a separate request to <code>https://api.dataforseo.com/v3/on_page/lighthouse/languages</code><br>default value:<br><code class=\"long-string\">en</code>", - "type": [ - "string", - "null" - ] - }, - "language_name": { - "description": "<em>lighthouse language name</em><br>optional field<br>you can receive the list of available languages of the search engine with their <code>language_name</code> by making a separate request to <code>https://api.dataforseo.com/v3/on_page/lighthouse/languages</code><br>default value:<br><code class=\"long-string\">English</code>", - "type": [ - "string", - "null" - ] - }, - "tag": { - "description": "<em>user-defined task identifier</em><br>optional field<br><em>the character limit is 255</em><br>you can use this parameter to identify the task and match it with the result<br>you will find the specified <code>tag</code> value in the <code>data</code> object of the response", - "type": [ - "string", - "null" - ] - }, - "url": { - "description": "<em>target URL</em><br><strong>required field</strong><br>target page should be specified with its absolute URL (including http:// or https://)<br>example:<br><code>https://dataforseo.com/</code>", - "type": "string" - }, - "version": { - "description": "<em>lighthouse version</em><br>optional field<br>you can obtain the results specific to a certain Lighthouse version by specifying its number<br>the list of available versions is available through the <a href=\"/v3/on_page/lighthouse/versions/\" rel=\"noopener noreferrer\" target=\"_blank\">Lighthouse Versions endpoint</a>", - "type": [ - "string", - "null" - ] - } - }, - "type": "object" - } -]New value: +[ + { + "properties": { + "audits": { + "description": "<em>Lighthouse audits</em><br>optional field<br>audits are individual tests Lighthouse runs for each specific feature/optimization/metric to produce a numeric score (<a href=\"https://github.com/GoogleChrome/lighthouse/blob/master/docs/architecture.md#components--terminology\" rel=\"noopener noreferrer\" target=\"_blank\">see official definition</a>); <p><strong>if you ignore this field, we will return data for all audits</strong>;<br>use this field to get data for specific audits you indicate here;<p><strong>Note:</strong> that some audits do not belong to a specific category and are stand-alone page quality measurements;<p>in general, there can be several use cases:<p>1. if you ignore <code>categories</code>, you can use this field to get data for the specified audits only<br>for example, if you ignore <code>\"categories\"</code> and specify <code>\"audits\": [\"metrics/cumulative-layout-shift\",\"metrics/largest-contentful-paint\",\"metrics/total-blocking-time\"]</code>, you will get data only for these audits<p>2. if you specify a category, you can use this field to additionally receive audits that do not belong to the category(-ies) you specified<br>for example, if you specify <code>\"categories\": [\"seo\"]</code> and <code>\"audits\": [\"metrics/cumulative-layout-shift\",\"metrics/largest-contentful-paint\",\"metrics/total-blocking-time\"]</code>, you will get only these audits under \"performance\" and all audits under \"seo\"<p>you can get <a href=\"/v3/on_page/lighthouse/audits/\">the full list of possible audits here</a>", + "items": { + "type": "string" + }, + "type": [ + "array", + "null" + ] + }, + "browser_cpu_throttling_multiplier": { + "description": "<em>browser CPU throttling multiplier</em><br><strong>required if <code>browser_network_throttling_method</code> is set to <code>devtools</code>;</strong><br>set the CPU throttling multiplier to simulate device performance conditions during the Lighthouse audit;<br>can be specified within the following range: <code>1–4</code>;<br><strong>Note:</strong> this parameter is applied only when <code>browser_network_throttling_method</code> is set to <code>devtools</code>;", + "type": [ + "number", + "null" + ] + }, + "browser_network_throttling": { + "description": "<em>browser network throttling</em><br><strong>required if <code>browser_network_throttling_method</code> is set to <code>devtools</code>;</strong><br>set the network throttling profile to simulate connection speed conditions during the Lighthouse audit;<br>possible values: <code>no_throttling</code>, <code>fast_4g</code>, <code>slow_4g</code>, <code>regular_3g</code>, <code>pc</code>;<br><strong>Note:</strong> this parameter is applied only when <code>browser_network_throttling_method</code> is set to <code>devtools</code>;", + "type": [ + "string", + "null" + ] + }, + "browser_network_throttling_method": { + "description": "<em>browser network throttling method</em><br>optional field<br>defines the method used to apply throttling during the Lighthouse audit;<br>possible vaules:<br><code>simulate</code> - calculates estimated performance metrics without applying explicit throttling;<br><code>devtools</code> - applies the throttling settings specified in <code>browser_network_throttling</code> and <code>browser_cpu_throttling_multiplier</code>;<br><code>provided</code> - uses the network conditions of the crawling environment;", + "type": [ + "string", + "null" + ] + }, + "browser_screen_height": { + "description": "<em>browser screen height</em><br>optional field<br>set the screen height of the browser used for the Lighthouse audit to emulate a specific device;<br>can be specified within the following range: <code>240–9999</code>;", + "type": [ + "integer", + "null" + ] + }, + "browser_screen_scale_factor": { + "description": "<em>browser screen scale factor</em><br>optional field<br>set the device pixel ratio of the browser used for the Lighthouse audit;<br>can be specified within the following range: <code>0.5–3</code>;", + "type": [ + "number", + "null" + ] + }, + "browser_screen_width": { + "description": "<em>browser screen width</em><br>optional field<br>set the screen width of the browser used for the Lighthouse audit to emulate a specific device;<br>can be specified within the following range: <code>240–9999</code>;", + "format": "int64", + "type": [ + "integer", + "null" + ] + }, + "categories": { + "description": "<em>categories of Lighthouse audits</em><br>optional field<br>each category is a collection of audits and audit groups that applies weighting and scoring to the section (<a href=\"https://github.com/GoogleChrome/lighthouse/blob/master/docs/architecture.md#auditreport-terminology\" rel=\"noopener noreferrer\" target=\"_blank\">see official definition</a>)<p><strong>if you ignore this field, we will return data for all categories unless you specify <code>audits</code></strong><br>use this field to get data for specific categories you indicate here<p>possible values:<br><code>seo</code>, <code>performance</code>, <code>best_practices</code>, <code>accessibility</code>", + "items": { + "type": "string" + }, + "type": [ + "array", + "null" + ] + }, + "custom_user_agent": { + "description": "<em>custom user agent</em><br>optional field<br>specify the custom user agent used by the browser when running the Lighthouse audit;<br>can be specified with up to 254 characters;", + "type": [ + "string", + "null" + ] + }, + "for_mobile": { + "description": "<em>applies mobile emulation</em><br>optional field<br>if set to <code>true</code>, Lighthouse will use mobile device and screen emulation to test the page against mobile environment<br>if set to <code>false</code>, the results will be provided for desktop<br>default value: <code>false</code>", + "type": [ + "boolean", + "null" + ] + }, + "language_code": { + "description": "<em>lighthouse language code</em><br>optional field<br>you can receive the list of available languages of the search engine with their <code>language_code</code> by making a separate request to <code>https://api.dataforseo.com/v3/on_page/lighthouse/languages</code><br>default value:<br><code class=\"long-string\">en</code>", + "type": [ + "string", + "null" + ] + }, + "language_name": { + "description": "<em>lighthouse language name</em><br>optional field<br>you can receive the list of available languages of the search engine with their <code>language_name</code> by making a separate request to <code>https://api.dataforseo.com/v3/on_page/lighthouse/languages</code><br>default value:<br><code class=\"long-string\">English</code>", + "type": [ + "string", + "null" + ] + }, + "tag": { + "description": "<em>user-defined task identifier</em><br>optional field<br><em>the character limit is 255</em><br>you can use this parameter to identify the task and match it with the result<br>you will find the specified <code>tag</code> value in the <code>data</code> object of the response", + "type": [ + "string", + "null" + ] + }, + "url": { + "description": "<em>target URL</em><br><strong>required field</strong><br>target page should be specified with its absolute URL (including http:// or https://)<br>example:<br><code>https://dataforseo.com/</code>", + "type": "string" + }, + "version": { + "description": "<em>lighthouse version</em><br>optional field<br>you can obtain the results specific to a certain Lighthouse version by specifying its number<br>the list of available versions is available through the <a href=\"/v3/on_page/lighthouse/versions/\" rel=\"noopener noreferrer\" target=\"_blank\">Lighthouse Versions endpoint</a>", + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + } +]
- Changed
post_dataforseo_on_page_links3 fields changed- added
Input schema / $defsAdded value: +{ + "Provider0A3E90081762_AisaDataforseoFilterJsonValue": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "number" + }, + { + "type": "boolean" + }, + { + "additionalProperties": { + "$ref": "#/$defs/Provider0A3E90081762_AisaDataforseoFilterJsonValue" + }, + "type": [ + "object", + "null" + ] + }, + { + "items": { + "$ref": "#/$defs/Provider0A3E90081762_AisaDataforseoFilterJsonValue" + }, + "type": "array" + } + ], + "description": "JSON representation of filter values and nested expressions. Field names, operators, condition counts and operand compatibility remain provider-validated as documented for each endpoint; this is not a complete filter-language validator." + } +} - added
Input schema / properties / body / items / anyOfAdded value: +[ + { + "properties": { + "filters": { + "description": "<em>array of results filtering parameters</em><br>optional field<br><strong>you can add several filters at once (8 filters maximum)</strong><br>you should set a logical operator <code>and</code>, <code>or</code> between the conditions<br>the following operators are supported:<br><code>regex</code>, <code>not_regex</code>, <code>=</code>, <code><></code>, <code>in</code>, <code>not_in</code>, <code>like</code>, <code>not_like</code><br>you can use the <code>%</code> operator with <code>like</code> and <code>not_like</code> to match any string of zero or more characters<br>example:<br><code>[\"direction\",\"=\",\"external\"]</code><p><code>[[\"domain_to\",\"<>\",\"example.com\"],<br>\"and\",<br>[\"link_from\",\"not_like\",\"%example.com/blog%\"]]</code><p><code>[[\"direction\",\"=\",\"external\"],<br>\"and\",<br>[[\"link_from\",\"like\",\"%example.com/blog%\"],\"or\",[\"link_from\",\"like\",\"%example.com/help%\"]]]</code><p>The full list of possible filters is available <a href=\"/v3/on_page/filters_and_thresholds/?bash\" rel=\"noopener noreferrer\" target=\"_blank\">by this link.</a>", + "items": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "number" + }, + { + "type": "boolean" + }, + { + "additionalProperties": { + "$ref": "#/$defs/Provider0A3E90081762_AisaDataforseoFilterJsonValue" + }, + "type": [ + "object", + "null" + ] + }, + { + "items": { + "$ref": "#/$defs/Provider0A3E90081762_AisaDataforseoFilterJsonValue" + }, + "type": "array" + } + ], + "description": "JSON representation of filter values and nested expressions. Field names, operators, condition counts and operand compatibility remain provider-validated as documented for each endpoint; this is not a complete filter-language validator." + }, + "type": [ + "array", + "null" + ] + }, + "id": { + "description": "<em>ID of the task</em><br><strong>required field</strong><br>you can get this ID in the response of the <a href=\"https://docs.dataforseo.com/v3/on_page/task_post/\">Task POST</a> endpoint<br>example:<br>\"07131248-1535-0216-1000-17384017ad04\"", + "type": "string" + }, + "limit": { + "description": "<em>the maximum number of returned links</em><br>optional field<br>default value: <code>100</code><br>maximum value: <code>1000</code>", + "type": [ + "integer", + "null" + ] + }, + "offset": { + "description": "<em>offset in the results array of returned links</em><br>optional field<br>default value: <code>0</code><br>maximum value: <code>2000000</code><br>if you specify the <code>10</code> value, the first ten links in the results array will be omitted and the data will be provided for the successive links", + "type": [ + "integer", + "null" + ] + }, + "page_from": { + "description": "<em>relative page URL</em><br>optional field<br>if you use this field, the API response will contain only links from the specified page<br>note that in this field you can specify relative URLs only", + "type": [ + "string", + "null" + ] + }, + "page_to": { + "description": "<em>relative page URL</em><br>optional field<br>if you use this field, the API response will contain only internal links pointing to the specified page<br>note that in this field you can specify relative URLs only", + "type": [ + "string", + "null" + ] + }, + "search_after_token": { + "description": "<em>token for subsequent requests</em><br>optional field<br>provided in the identical filed of the response to each request;<br>use this parameter to avoid timeouts while trying to obtain over <code>20,000</code> results in a single request;<br>by specifying the unique <code>search_after_token</code> value from the response array, you will get the subsequent results of the initial task;<br><code>search_after_token</code> values are unique for each subsequent task ;<br><strong>Note:</strong> if the <code>search_after_token</code> is specified in the request, all other parameters should be identical to the previous request", + "type": [ + "string", + "null" + ] + }, + "tag": { + "description": "<em>user-defined task identifier</em><br>optional field<br><em>the character limit is 255</em><br>you can use this parameter to identify the task and match it with the result<br>you will find the specified <code>tag</code> value in the <code>data</code> object of the response", + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + } +] - removed
Input schema / properties / body / items / oneOfRemoved value: -[ - { - "example": [ - { - "filters": [ - [ - "dofollow", - "=", - true - ], - "and", - [ - "direction", - "=", - "external" - ] - ], - "id": "07281559-0695-0216-0000-c269be8b7592", - "limit": 10, - "page_from": "/apis/google-trends-api" - } - ], - "properties": { - "filters": { - "description": "<em>array of results filtering parameters</em><br>optional field<br><strong>you can add several filters at once (8 filters maximum)</strong><br>you should set a logical operator <code>and</code>, <code>or</code> between the conditions<br>the following operators are supported:<br><code>regex</code>, <code>not_regex</code>, <code>=</code>, <code><></code>, <code>in</code>, <code>not_in</code>, <code>like</code>, <code>not_like</code><br>you can use the <code>%</code> operator with <code>like</code> and <code>not_like</code> to match any string of zero or more characters<br>example:<br><code>[\"direction\",\"=\",\"external\"]</code><p><code>[[\"domain_to\",\"<>\",\"example.com\"],<br>\"and\",<br>[\"link_from\",\"not_like\",\"%example.com/blog%\"]]</code><p><code>[[\"direction\",\"=\",\"external\"],<br>\"and\",<br>[[\"link_from\",\"like\",\"%example.com/blog%\"],\"or\",[\"link_from\",\"like\",\"%example.com/help%\"]]]</code><p>The full list of possible filters is available <a href=\"/v3/on_page/filters_and_thresholds/?bash\" rel=\"noopener noreferrer\" target=\"_blank\">by this link.</a>", - "items": { - "type": [ - "object", - "null" - ] - }, - "type": [ - "array", - "null" - ] - }, - "id": { - "description": "<em>ID of the task</em><br><strong>required field</strong><br>you can get this ID in the response of the <a href=\"https://docs.dataforseo.com/v3/on_page/task_post/\">Task POST</a> endpoint<br>example:<br>\"07131248-1535-0216-1000-17384017ad04\"", - "type": "string" - }, - "limit": { - "description": "<em>the maximum number of returned links</em><br>optional field<br>default value: <code>100</code><br>maximum value: <code>1000</code>", - "type": [ - "integer", - "null" - ] - }, - "offset": { - "description": "<em>offset in the results array of returned links</em><br>optional field<br>default value: <code>0</code><br>maximum value: <code>2000000</code><br>if you specify the <code>10</code> value, the first ten links in the results array will be omitted and the data will be provided for the successive links", - "type": [ - "integer", - "null" - ] - }, - "page_from": { - "description": "<em>relative page URL</em><br>optional field<br>if you use this field, the API response will contain only links from the specified page<br>note that in this field you can specify relative URLs only", - "type": [ - "string", - "null" - ] - }, - "page_to": { - "description": "<em>relative page URL</em><br>optional field<br>if you use this field, the API response will contain only internal links pointing to the specified page<br>note that in this field you can specify relative URLs only", - "type": [ - "string", - "null" - ] - }, - "search_after_token": { - "description": "<em>token for subsequent requests</em><br>optional field<br>provided in the identical filed of the response to each request;<br>use this parameter to avoid timeouts while trying to obtain over <code>20,000</code> results in a single request;<br>by specifying the unique <code>search_after_token</code> value from the response array, you will get the subsequent results of the initial task;<br><code>search_after_token</code> values are unique for each subsequent task ;<br><strong>Note:</strong> if the <code>search_after_token</code> is specified in the request, all other parameters should be identical to the previous request", - "type": [ - "string", - "null" - ] - }, - "tag": { - "description": "<em>user-defined task identifier</em><br>optional field<br><em>the character limit is 255</em><br>you can use this parameter to identify the task and match it with the result<br>you will find the specified <code>tag</code> value in the <code>data</code> object of the response", - "type": [ - "string", - "null" - ] - } - }, - "type": "object" - } -]
- Changed
post_dataforseo_on_page_microdata1 field changed- changed
Input schema / properties / body / items / oneOfPrevious value: -[ - { - "example": [ - { - "id": "02241700-1535-0216-0000-034137259bc1", - "url": "https://dataforseo.com/apis" - } - ], - "properties": { - "id": { - "description": "<em>ID of the task</em><br><strong>required field</strong><br>you can get this ID in the response of the <a href=\"/v3/on_page/task_post/\">Task POST</a> endpoint<br>example:<br><code>\"07131248-1535-0216-1000-17384017ad04\"</code>", - "type": "string" - }, - "tag": { - "description": "<em>user-defined task identifier</em><br>optional field<br><em>the character limit is 255</em><br>you can use this parameter to identify the task and match it with the result<br>you will find the specified <code>tag</code> value in the <code>data</code> object of the response", - "type": [ - "string", - "null" - ] - }, - "url": { - "description": "<em>resource URL</em><br><strong>required field</strong><br>you can get this URL in the response of the <a href=\"/v3/on_page/pages/\">Pages</a> endpoint<br>example:<br><code>https://dataforseo.com/apis</code>", - "type": "string" - } - }, - "type": "object" - } -]New value: +[ + { + "properties": { + "id": { + "description": "<em>ID of the task</em><br><strong>required field</strong><br>you can get this ID in the response of the <a href=\"/v3/on_page/task_post/\">Task POST</a> endpoint<br>example:<br><code>\"07131248-1535-0216-1000-17384017ad04\"</code>", + "type": "string" + }, + "tag": { + "description": "<em>user-defined task identifier</em><br>optional field<br><em>the character limit is 255</em><br>you can use this parameter to identify the task and match it with the result<br>you will find the specified <code>tag</code> value in the <code>data</code> object of the response", + "type": [ + "string", + "null" + ] + }, + "url": { + "description": "<em>resource URL</em><br><strong>required field</strong><br>you can get this URL in the response of the <a href=\"/v3/on_page/pages/\">Pages</a> endpoint<br>example:<br><code>https://dataforseo.com/apis</code>", + "type": "string" + } + }, + "type": "object" + } +]
- Changed
post_dataforseo_on_page_non_indexable3 fields changed- added
Input schema / $defsAdded value: +{ + "Provider0A3E90081762_AisaDataforseoFilterJsonValue": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "number" + }, + { + "type": "boolean" + }, + { + "additionalProperties": { + "$ref": "#/$defs/Provider0A3E90081762_AisaDataforseoFilterJsonValue" + }, + "type": [ + "object", + "null" + ] + }, + { + "items": { + "$ref": "#/$defs/Provider0A3E90081762_AisaDataforseoFilterJsonValue" + }, + "type": "array" + } + ], + "description": "JSON representation of filter values and nested expressions. Field names, operators, condition counts and operand compatibility remain provider-validated as documented for each endpoint; this is not a complete filter-language validator." + } +} - added
Input schema / properties / body / items / anyOfAdded value: +[ + { + "properties": { + "filters": { + "description": "<em>array of results filtering parameters</em><br>optional field<br><strong>you can add several filters at once (8 filters maximum)</strong><br>you should set a logical operator <code>and</code>, <code>or</code> between the conditions<br>the following operators are supported:<br><code>regex</code>, <code>not_regex</code>, <code><</code>, <code><=</code>, <code>></code>, <code>>=</code>, <code>=</code>, <code><></code>, <code>in</code>, <code>not_in</code>, <code>like</code>, <code>not_like</code><br>you can use the <code>%</code> operator with <code>like</code> and <code>not_like</code> to match any string of zero or more characters<br>example:<br><code>[[\"reason\",\"<>\",\"robots_txt\"],<br>\"and\",<br>[\"url\",\"not_like\",\"%/wp-admin/%\"]]</code><p><code>[[\"url\",\"not_like\",\"%/wp-admin/%\"],<br>\"and\",<br>[[\"reason\",\"<>\",\"meta_tag\"],\"or\",[\"reason\",\"<>\",\"http_header\"]]]</code><p>The full list of possible filters is available <a href=\"/v3/on_page/filters_and_thresholds/?bash\" target=\"_blank\" rel=\"noopener noreferrer\">by this link.</a>", + "items": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "number" + }, + { + "type": "boolean" + }, + { + "additionalProperties": { + "$ref": "#/$defs/Provider0A3E90081762_AisaDataforseoFilterJsonValue" + }, + "type": [ + "object", + "null" + ] + }, + { + "items": { + "$ref": "#/$defs/Provider0A3E90081762_AisaDataforseoFilterJsonValue" + }, + "type": "array" + } + ], + "description": "JSON representation of filter values and nested expressions. Field names, operators, condition counts and operand compatibility remain provider-validated as documented for each endpoint; this is not a complete filter-language validator." + }, + "type": [ + "array", + "null" + ] + }, + "id": { + "description": "<em>ID of the task</em><br><strong>required field</strong><br>you can get this ID in the response of the <a href=\"/v3/on_page/task_post/\">Task POST</a> endpoint<br>example:<br>\"07131248-1535-0216-1000-17384017ad04\"", + "type": "string" + }, + "limit": { + "description": "<em>the maximum number of returned pages</em><br>optional field<br>default value: <code>100</code><br>maximum value: <code>1000</code>", + "type": [ + "integer", + "null" + ] + }, + "offset": { + "description": "<em>offset in the results array of returned pages</em><br>optional field<br>default value: <code>0</code><br>maximum value: <code>2000000</code><br>if you specify the <code>10</code> value, the first ten pages in the results array will be omitted and the data will be provided for the successive pages", + "type": [ + "integer", + "null" + ] + } + }, + "type": "object" + } +] - removed
Input schema / properties / body / items / oneOfRemoved value: -[ - { - "example": [ - { - "filters": [ - [ - "reason", - "=", - "robots_txt" - ], - "and", - [ - "url", - "like", - "%go%" - ] - ], - "id": "07281559-0695-0216-0000-c269be8b7592", - "limit": 10 - } - ], - "properties": { - "filters": { - "description": "<em>array of results filtering parameters</em><br>optional field<br><strong>you can add several filters at once (8 filters maximum)</strong><br>you should set a logical operator <code>and</code>, <code>or</code> between the conditions<br>the following operators are supported:<br><code>regex</code>, <code>not_regex</code>, <code><</code>, <code><=</code>, <code>></code>, <code>>=</code>, <code>=</code>, <code><></code>, <code>in</code>, <code>not_in</code>, <code>like</code>, <code>not_like</code><br>you can use the <code>%</code> operator with <code>like</code> and <code>not_like</code> to match any string of zero or more characters<br>example:<br><code>[[\"reason\",\"<>\",\"robots_txt\"],<br>\"and\",<br>[\"url\",\"not_like\",\"%/wp-admin/%\"]]</code><p><code>[[\"url\",\"not_like\",\"%/wp-admin/%\"],<br>\"and\",<br>[[\"reason\",\"<>\",\"meta_tag\"],\"or\",[\"reason\",\"<>\",\"http_header\"]]]</code><p>The full list of possible filters is available <a href=\"/v3/on_page/filters_and_thresholds/?bash\" target=\"_blank\" rel=\"noopener noreferrer\">by this link.</a>", - "items": { - "type": [ - "object", - "null" - ] - }, - "type": [ - "array", - "null" - ] - }, - "id": { - "description": "<em>ID of the task</em><br><strong>required field</strong><br>you can get this ID in the response of the <a href=\"/v3/on_page/task_post/\">Task POST</a> endpoint<br>example:<br>\"07131248-1535-0216-1000-17384017ad04\"", - "type": "string" - }, - "limit": { - "description": "<em>the maximum number of returned pages</em><br>optional field<br>default value: <code>100</code><br>maximum value: <code>1000</code>", - "type": [ - "integer", - "null" - ] - }, - "offset": { - "description": "<em>offset in the results array of returned pages</em><br>optional field<br>default value: <code>0</code><br>maximum value: <code>2000000</code><br>if you specify the <code>10</code> value, the first ten pages in the results array will be omitted and the data will be provided for the successive pages", - "type": [ - "integer", - "null" - ] - } - }, - "type": "object" - } -]
- Changed
post_dataforseo_on_page_raw_html1 field changed- changed
Input schema / properties / body / items / oneOfPrevious value: -[ - { - "example": [ - { - "id": "07281559-0695-0216-0000-c269be8b7592", - "url": "https://dataforseo.com/apis" - } - ], - "properties": { - "id": { - "description": "<em>ID of the task</em><br><strong>required field</strong><br>you can get this ID in the response of the <a href=\"/v3/on_page/task_post/\">Task POST</a> endpoint<br>example:<br>\"07131248-1535-0216-1000-17384017ad04\"", - "type": "string" - }, - "url": { - "description": "<em>page url</em><br><strong>required field</strong><br>the absolute URL of a page to request HTML<br><strong>Note:</strong> this field is optional if the task was set using the <a href=\"/v3/on_page/instant_pages/\">Instant Pages endpoint</a>", - "type": "string" - } - }, - "type": "object" - } -]New value: +[ + { + "properties": { + "id": { + "description": "<em>ID of the task</em><br><strong>required field</strong><br>you can get this ID in the response of the <a href=\"/v3/on_page/task_post/\">Task POST</a> endpoint<br>example:<br>\"07131248-1535-0216-1000-17384017ad04\"", + "type": "string" + }, + "url": { + "description": "<em>page url</em><br><strong>required field</strong><br>the absolute URL of a page to request HTML<br><strong>Note:</strong> this field is optional if the task was set using the <a href=\"/v3/on_page/instant_pages/\">Instant Pages endpoint</a>", + "type": "string" + } + }, + "type": "object" + } +]
- Changed
post_dataforseo_on_page_resources3 fields changed- added
Input schema / $defsAdded value: +{ + "Provider0A3E90081762_AisaDataforseoFilterJsonValue": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "number" + }, + { + "type": "boolean" + }, + { + "additionalProperties": { + "$ref": "#/$defs/Provider0A3E90081762_AisaDataforseoFilterJsonValue" + }, + "type": [ + "object", + "null" + ] + }, + { + "items": { + "$ref": "#/$defs/Provider0A3E90081762_AisaDataforseoFilterJsonValue" + }, + "type": "array" + } + ], + "description": "JSON representation of filter values and nested expressions. Field names, operators, condition counts and operand compatibility remain provider-validated as documented for each endpoint; this is not a complete filter-language validator." + } +} - added
Input schema / properties / body / items / anyOfAdded value: +[ + { + "properties": { + "filters": { + "description": "<em>array of results filtering parameters</em><br>optional field<br><strong>you can add several filters at once (8 filters maximum)</strong><br>you should set a logical operator <code>and</code>, <code>or</code> between the conditions<br>the following operators are supported:<br><code>regex</code>, <code>not_regex</code>, <code><</code>, <code><=</code>, <code>></code>, <code>>=</code>, <code>=</code>, <code><></code>, <code>in</code>, <code>not_in</code>, <code>like</code>, <code>not_like</code><br>you can use the <code>%</code> operator with <code>like</code> and <code>not_like</code> to match any string of zero or more characters<br>example:<br><code>[\"resource_type\",\"=\",\"stylesheet\"]</code><p><code>[[\"resource_type\",\"=\",\"image\"],<br>\"and\",[\"checks.is_https\",\"=\",false]]</code><p><code>[[\"fetch_timing.duration_time\",\">\",1],\"and\",[[\"total_transfer_size\",\">\",100],\"or\",[\"checks.high_loading_time\",\"=\",true]]]</code><p>The full list of possible filters is available <a href=\"/v3/on_page/filters_and_thresholds/?bash\" rel=\"noopener noreferrer\" target=\"_blank\">by this link.</a>", + "items": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "number" + }, + { + "type": "boolean" + }, + { + "additionalProperties": { + "$ref": "#/$defs/Provider0A3E90081762_AisaDataforseoFilterJsonValue" + }, + "type": [ + "object", + "null" + ] + }, + { + "items": { + "$ref": "#/$defs/Provider0A3E90081762_AisaDataforseoFilterJsonValue" + }, + "type": "array" + } + ], + "description": "JSON representation of filter values and nested expressions. Field names, operators, condition counts and operand compatibility remain provider-validated as documented for each endpoint; this is not a complete filter-language validator." + }, + "type": [ + "array", + "null" + ] + }, + "id": { + "description": "<em>ID of the task</em><br><strong>required field</strong><br>you can get this ID in the response of the <a href=\"/v3/on_page/task_post/\">Task POST</a> endpoint<br>example:<br>\"07131248-1535-0216-1000-17384017ad04\"", + "type": "string" + }, + "limit": { + "description": "<em>the maximum number of returned resources</em><br>optional field<br>default value: <code>100</code><br>maximum value: <code>1000</code>", + "type": [ + "integer", + "null" + ] + }, + "offset": { + "description": "<em>offset in the results array of returned resources</em><br>optional field<br>default value: <code>0</code><br>maximum value: <code>2000000</code><br>if you specify the <code>10</code> value, the first ten resources in the results array will be omitted and the data will be provided for the successive resources", + "type": [ + "integer", + "null" + ] + }, + "order_by": { + "description": "<em>results sorting rules</em><br>optional field<br>you can use the same values as in the <code>filters</code> array to sort the results<br>possible sorting types:<br><code>asc</code> - results will be sorted in the ascending order<br><code>desc</code> - results will be sorted in the descending order<br>you should use a comma to set up a sorting type<br>example:<br><code>[\"size,desc\"]</code><br><strong>note that you can set no more than three sorting rules in a single request</strong><br>you should use a comma to separate several sorting rules<br>example:<br><code>[\"size,desc\",\"fetch_timing.fetch_end,desc\"]</code>", + "items": { + "type": "string" + }, + "type": [ + "array", + "null" + ] + }, + "relevant_pages_filters": { + "description": "<em>filter the resources by relevant pages</em><br>optional field<br>you can use this field to obtain resources from pages matching to the defined parameters<br>you can apply the same filters here as available for the <a href=\"/v3/on_page/pages/\" rel=\"noopener noreferrer\" target=\"_blank\">pages endpoint</a><br><strong>you can add several filters at once (8 filters maximum)</strong><br>you should set a logical operator <code>and</code>, <code>or</code> between the conditions<br>the following operators are supported:<br><code>regex</code>, <code>not_regex</code>, <code><</code>, <code><=</code>, <code>></code>, <code>>=</code>, <code>=</code>, <code><></code>, <code>in</code>, <code>not_in</code>, <code>like</code>, <code>not_like</code><br>you can use the <code>%</code> operator with <code>like</code> and <code>not_like</code> to match any string of zero or more characters<br>example:<br><code>[\"checks.no_image_title\",\"=\",true]</code>", + "items": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "number" + }, + { + "type": "boolean" + }, + { + "additionalProperties": { + "$ref": "#/$defs/Provider0A3E90081762_AisaDataforseoFilterJsonValue" + }, + "type": [ + "object", + "null" + ] + }, + { + "items": { + "$ref": "#/$defs/Provider0A3E90081762_AisaDataforseoFilterJsonValue" + }, + "type": "array" + } + ], + "description": "JSON representation of filter values and nested expressions. Field names, operators, condition counts and operand compatibility remain provider-validated as documented for each endpoint; this is not a complete filter-language validator." + }, + "type": [ + "array", + "null" + ] + }, + "search_after_token": { + "description": "<em>token for subsequent requests</em><br>optional field<br>provided in the identical filed of the response to each request;<br>use this parameter to avoid timeouts while trying to obtain over <code>20,000</code> results in a single request;<br>by specifying the unique <code>search_after_token</code> value from the response array, you will get the subsequent results of the initial task;<br><code>search_after_token</code> values are unique for each subsequent task ;<br><strong>Note:</strong> if the <code>search_after_token</code> is specified in the request, all other parameters should be identical to the previous request", + "type": [ + "string", + "null" + ] + }, + "tag": { + "description": "<em>user-defined task identifier</em><br>optional field<br><em>the character limit is 255</em><br>you can use this parameter to identify the task and match it with the result<br>you will find the specified <code>tag</code> value in the <code>data</code> object of the response", + "type": [ + "string", + "null" + ] + }, + "url": { + "description": "<em>page URL</em><br>optional field<br>specify this field if you want to get the resources for a specific page<br>note that to obtain resource's <code>meta</code> from a particular URL, you should specify the URL in this field;<br>if you do not indicate a <code>url</code> when setting a task, resource's <code>meta</code> in the results will be returned based on the data from the page where our crawler first saw the resource", + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + } +] - removed
Input schema / properties / body / items / oneOfRemoved value: -[ - { - "example": [ - { - "filters": [ - [ - "resource_type", - "=", - "image" - ], - "and", - [ - "size", - ">", - 100000 - ] - ], - "id": "07281559-0695-0216-0000-c269be8b7592", - "limit": 10, - "order_by": [ - "size,desc" - ] - } - ], - "properties": { - "filters": { - "description": "<em>array of results filtering parameters</em><br>optional field<br><strong>you can add several filters at once (8 filters maximum)</strong><br>you should set a logical operator <code>and</code>, <code>or</code> between the conditions<br>the following operators are supported:<br><code>regex</code>, <code>not_regex</code>, <code><</code>, <code><=</code>, <code>></code>, <code>>=</code>, <code>=</code>, <code><></code>, <code>in</code>, <code>not_in</code>, <code>like</code>, <code>not_like</code><br>you can use the <code>%</code> operator with <code>like</code> and <code>not_like</code> to match any string of zero or more characters<br>example:<br><code>[\"resource_type\",\"=\",\"stylesheet\"]</code><p><code>[[\"resource_type\",\"=\",\"image\"],<br>\"and\",[\"checks.is_https\",\"=\",false]]</code><p><code>[[\"fetch_timing.duration_time\",\">\",1],\"and\",[[\"total_transfer_size\",\">\",100],\"or\",[\"checks.high_loading_time\",\"=\",true]]]</code><p>The full list of possible filters is available <a href=\"/v3/on_page/filters_and_thresholds/?bash\" rel=\"noopener noreferrer\" target=\"_blank\">by this link.</a>", - "items": { - "type": [ - "object", - "null" - ] - }, - "type": [ - "array", - "null" - ] - }, - "id": { - "description": "<em>ID of the task</em><br><strong>required field</strong><br>you can get this ID in the response of the <a href=\"/v3/on_page/task_post/\">Task POST</a> endpoint<br>example:<br>\"07131248-1535-0216-1000-17384017ad04\"", - "type": "string" - }, - "limit": { - "description": "<em>the maximum number of returned resources</em><br>optional field<br>default value: <code>100</code><br>maximum value: <code>1000</code>", - "type": [ - "integer", - "null" - ] - }, - "offset": { - "description": "<em>offset in the results array of returned resources</em><br>optional field<br>default value: <code>0</code><br>maximum value: <code>2000000</code><br>if you specify the <code>10</code> value, the first ten resources in the results array will be omitted and the data will be provided for the successive resources", - "type": [ - "integer", - "null" - ] - }, - "order_by": { - "description": "<em>results sorting rules</em><br>optional field<br>you can use the same values as in the <code>filters</code> array to sort the results<br>possible sorting types:<br><code>asc</code> - results will be sorted in the ascending order<br><code>desc</code> - results will be sorted in the descending order<br>you should use a comma to set up a sorting type<br>example:<br><code>[\"size,desc\"]</code><br><strong>note that you can set no more than three sorting rules in a single request</strong><br>you should use a comma to separate several sorting rules<br>example:<br><code>[\"size,desc\",\"fetch_timing.fetch_end,desc\"]</code>", - "items": { - "type": "string" - }, - "type": [ - "array", - "null" - ] - }, - "relevant_pages_filters": { - "description": "<em>filter the resources by relevant pages</em><br>optional field<br>you can use this field to obtain resources from pages matching to the defined parameters<br>you can apply the same filters here as available for the <a href=\"/v3/on_page/pages/\" rel=\"noopener noreferrer\" target=\"_blank\">pages endpoint</a><br><strong>you can add several filters at once (8 filters maximum)</strong><br>you should set a logical operator <code>and</code>, <code>or</code> between the conditions<br>the following operators are supported:<br><code>regex</code>, <code>not_regex</code>, <code><</code>, <code><=</code>, <code>></code>, <code>>=</code>, <code>=</code>, <code><></code>, <code>in</code>, <code>not_in</code>, <code>like</code>, <code>not_like</code><br>you can use the <code>%</code> operator with <code>like</code> and <code>not_like</code> to match any string of zero or more characters<br>example:<br><code>[\"checks.no_image_title\",\"=\",true]</code>", - "items": { - "type": "string" - }, - "type": [ - "array", - "null" - ] - }, - "search_after_token": { - "description": "<em>token for subsequent requests</em><br>optional field<br>provided in the identical filed of the response to each request;<br>use this parameter to avoid timeouts while trying to obtain over <code>20,000</code> results in a single request;<br>by specifying the unique <code>search_after_token</code> value from the response array, you will get the subsequent results of the initial task;<br><code>search_after_token</code> values are unique for each subsequent task ;<br><strong>Note:</strong> if the <code>search_after_token</code> is specified in the request, all other parameters should be identical to the previous request", - "type": [ - "string", - "null" - ] - }, - "tag": { - "description": "<em>user-defined task identifier</em><br>optional field<br><em>the character limit is 255</em><br>you can use this parameter to identify the task and match it with the result<br>you will find the specified <code>tag</code> value in the <code>data</code> object of the response", - "type": [ - "string", - "null" - ] - }, - "url": { - "description": "<em>page URL</em><br>optional field<br>specify this field if you want to get the resources for a specific page<br>note that to obtain resource's <code>meta</code> from a particular URL, you should specify the URL in this field;<br>if you do not indicate a <code>url</code> when setting a task, resource's <code>meta</code> in the results will be returned based on the data from the page where our crawler first saw the resource", - "type": [ - "string", - "null" - ] - } - }, - "type": "object" - } -]
- Changed
post_dataforseo_on_page_submit1 field changed- changed
Input schema / properties / body / items / oneOfPrevious value: -[ - { - "example": [ - { - "custom_js": "meta = {}; meta.url = document.URL; meta;", - "enable_javascript": true, - "load_resources": true, - "max_crawl_pages": 10, - "pingback_url": "https://your-server.com/pingscript?id=$id&tag=$tag", - "tag": "some_string_123", - "target": "dataforseo.com" - } - ], - "properties": { - "accept_language": { - "description": "<em>language header for accessing the website</em><br>optional field<br>all locale formats are supported (xx, xx-XX, xxx-XX, etc.)<br><strong>Note:</strong> if you do not specify this parameter, some websites may deny access; in this case, pages will be returned with the <code>\"type\":\"broken</code> in the response array", - "type": [ - "string", - "null" - ] - }, - "allow_subdomains": { - "description": "<em>include pages on subdomains</em><br>optional field<br>set to <code>true</code> if you want to crawl all subdomains of a target website<br>default value: <code>false</code>", - "type": [ - "boolean", - "null" - ] - }, - "allowed_subdomains": { - "description": "<em>subdomains to crawl</em><br>optional field<br>specify subdomains that you want to crawl<br>example: <code>[\"blog.site.com\", \"my.site.com\", \"shop.site.com\"]</code><br><strong>Note:</strong> to use this parameter, the <code>allow_subdomains</code> parameter should be set to <code>false</code>;<br>otherwise, the content of <code>allowed_subdomains</code> field will be ignored and the results will be returned for all subdomains", - "items": { - "type": "string" - }, - "type": [ - "array", - "null" - ] - }, - "browser_preset": { - "description": "<em>preset for browser screen parameters</em><br>optional field<br>if you use this field, you don't need to indicate <code>browser_screen_width</code>, <code>browser_screen_height</code>, <code>browser_screen_scale_factor</code>possible values:<br><code>desktop</code>, <code>mobile</code>, <code>tablet</code><code>desktop</code> preset will apply the following values:<code>browser_screen_width: 1920</code><br><code>browser_screen_height: 1080</code><br><code>browser_screen_scale_factor: 1</code><code>mobile</code> preset will apply the following values:<code>browser_screen_width: 390</code><br><code>browser_screen_height: 844</code><br><code>browser_screen_scale_factor: 3</code><code>tablet</code> preset will apply the following values:<code>browser_screen_width: 1024</code><br><code>browser_screen_height: 1366</code><br><code>browser_screen_scale_factor: 2</code><br><strong>Note:</strong> to use this parameter, set <code>enable_javascript</code> or <code>enable_browser_rendering</code> to <code>true</code>", - "type": [ - "string", - "null" - ] - }, - "browser_screen_height": { - "description": "<em>browser screen height</em><br>optional field<br>you can set a custom browser screen height to perform an audit for a particular device;<br>if you use this field, you don't need to indicate <code>browser_preset</code> as it will be ignored;<br><strong>Note:</strong> to use this parameter, set <code>enable_javascript</code> or <code>enable_browser_rendering</code> to <code>true</code>minimum value, in pixels: <code>240</code><br>maximum value, in pixels: <code>9999</code>", - "type": [ - "integer", - "null" - ] - }, - "browser_screen_scale_factor": { - "description": "<em>browser screen scale factor</em><br>optional field<br>you can set a custom browser screen resolution ratio to perform audit for a particular device;<br>if you use this field, you don't need to indicate <code>browser_preset</code> as it will be ignored;<br><strong>Note:</strong> to use this parameter, set <code>enable_javascript</code> or <code>enable_browser_rendering</code> to <code>true</code>minimum value: <code>0.5</code><br>maximum value: <code>3</code>", - "type": [ - "number", - "null" - ] - }, - "browser_screen_width": { - "description": "<em>browser screen width</em><br>optional field<br>you can set a custom browser screen width to perform audit for a particular device;<br>if you use this field, you don't need to indicate <code>browser_preset</code> as it will be ignored;<br><strong>Note:</strong> to use this parameter, set <code>enable_javascript</code> or <code>enable_browser_rendering</code> to <code>true</code>minimum value, in pixels: <code>240</code><br>maximum value, in pixels: <code>9999</code>", - "format": "int64", - "type": [ - "integer", - "null" - ] - }, - "calculate_keyword_density": { - "description": "<em>calculate keyword density for the target domain</em><br>optional field<br>set to <code>true</code> if you want to calculate keyword density for website pages<br>default value: <code>false</code><br><strong>Note:</strong> if you use this parameter, additional charges will apply; learn more about the cost of tasks with this parameter <a href=\"https://dataforseo.com/help-center/cost-of-onpage-api-parameters\" target=\"_blank\" rel=\"noopener noreferrer\">in our help article</a><br>once the crawl is completed, you can obtain keyword density values with <a href=\"/v3/on_page/keyword_density?bash\" target=\"_blank\" rel=\"noopener noreferrer\">the Keyword Density endpoint</a>", - "type": [ - "boolean", - "null" - ] - }, - "check_spell": { - "description": "<em>check spelling</em><br>optional field<br>set to <code>true</code> to check spelling on a website using <a href=\"http://hunspell.github.io/\" target=\"_blank\" rel=\"noopener noreferrer\">Hunspell</a> library<br>default value: <code>false</code>", - "type": [ - "boolean", - "null" - ] - }, - "check_spell_exceptions": { - "description": "<em>words excluded from spell check</em><br>optional field<br>specify the words that you want to exclude from spell check<br>maximum word length: 100 characters<br>maximum amount of words: 1000<br>example: <code>\"SERP\", \"minifiers\", \"JavaScript\"</code>", - "items": { - "type": "string" - }, - "type": [ - "array", - "null" - ] - }, - "check_spell_language": { - "description": "<em>language of the spell check</em><br>optional field<br>supported languages: 'hy', 'eu', 'bg', 'ca', 'hr', 'cs', 'da', 'nl', 'en', 'eo', 'et', 'fo', 'fa', 'fr', 'fy', 'gl', 'ka', 'de', 'el', 'he', 'hu', 'is', 'ia', 'ga', 'it', 'rw', 'la', 'lv', 'lt', 'mk', 'mn', 'ne', 'nb', 'nn', 'pl', 'pt', 'ro', 'gd', 'sr', 'sk', 'sl', 'es', 'sv', 'tr', 'tk', 'uk', 'vi'<br><strong>Note:</strong> if no language is specified, it will be set automatically based on page content", - "type": [ - "string", - "null" - ] - }, - "checks_threshold": { - "additionalProperties": { - "format": "int64", - "type": [ - "integer", - "null" - ] - }, - "description": "<em>custom threshold values for checks</em><br>optional field<br>you can specify custom threshold values for the parameters included in the <code>checks</code> object of OnPage API responses;<br><strong>Note:</strong> only integer threshold values can be modified;<br>for example, the <code>high_loading_time</code> and <code>large_page_size</code> parameters are set to 3 seconds and 1 megabyte respectively by default;<br>if you want to change these thresholds to 1 second and 1000 kbytes, use the following snippet:<br>`\"checks_threshold\": {<br>\"high_loading_time\": 1,<br>\"large_page_size\": 1000<br>}`<br>available customizable parameters with default values:<br>`\"title_too_short\", default value: 30, type: \"int\"<br>\"title_too_long\", default value: 65, type: \"int\"<br>\"small_page_size\", default value: 1024, type: \"int\"<br>\"large_page_size\", default value: 1048576 (1024 * 1024), type: \"int\"<br>\"low_character_count\", default value: 1024, type: \"int\"<br>\"high_character_count\", default value: 256000 (250 * 1024), type: \"int\"<br>\"low_content_rate\", default value: 0.1, type: \"float\"<br>\"high_content_rate\", default value: 0.9, type: \"float\"<br>\"high_loading_time\", default value: 3000, type: \"int\"<br>\"high_waiting_time\", default value: 1500, type: \"int\"<br>\"low_readability_rate\", default value: 15.0, type: \"float\"<br>\"irrelevant_description\", default value: 0.2, type: \"float\"<br>\"irrelevant_title\", default value: 0.3, type: \"float\"<br>\"irrelevant_meta_keywords\", default value: 0.6, type: \"float\"`", - "type": [ - "object", - "null" - ] - }, - "crawl_delay": { - "description": "<em>delay between hits, ms</em><br>optional field<br>the custom delay between crawler hits to the server<br>default value: <code>2000</code>", - "type": [ - "integer", - "null" - ] - }, - "crawl_sitemap_only": { - "description": "<em>crawl only pages indicated in the sitemap</em><br>optional field<br>set to <code>true</code> if you want to crawl only the pages indicated in the sitemap<br>if you set this parameter to <code>true</code> and do not specify <code>custom_sitemap</code>, we will crawl the default sitemap<br>default value: <code>false</code><br><strong>Note:</strong> if you want to use this parameter, <code>respect_sitemap</code> should be <code>true</code>", - "type": [ - "boolean", - "null" - ] - }, - "custom_js": { - "description": "<em>custom javascript</em><br>optional field<br><strong>Note</strong> that the execution time for the script you enter here should be 700 ms maximum, for example, you can use the following JS snippet to check if the website contains Google Tag Manager as a <code>scr</code> attribute:<br><code>let meta = { haveGoogleAnalytics: false, haveTagManager: false };rnfor (var i = 0; i < document.scripts.length; i++) {rn let src = document.scripts[i].getAttribute(\"src\");rn if (src != undefined) {rn if (src.indexOf(\"analytics.js\") >= 0)rn meta.haveGoogleAnalytics = true;rntif (src.indexOf(\"gtm.js\") >= 0)rn meta.haveTagManager = true;rn }rn}rnmeta;</code>the returned value depends on what you specified in this field. For instance, if you specify the following script:<br>`meta = {}; meta.url = document.URL; meta.test = 'test'; meta;`<br>as a response you will receive the following data:<br>`\"custom_js_response\": {<br>\"url\": \"https://dataforseo.com/\",<br>\"test\": \"test\"<br>}`<br><strong>Note:</strong> the length of the script you enter must be no more than 2000 characters", - "type": [ - "string", - "null" - ] - }, - "custom_robots_txt": { - "description": "<em>custom robots.txt settings</em><br>optional field<br>example: <code>Disallow: /directory1/</code>", - "type": [ - "string", - "null" - ] - }, - "custom_sitemap": { - "description": "<em>custom sitemap url</em><br>optional field<br>the URL of the page where the alternative sitemap is located<br><strong>Note:</strong> if you want to use this parameter, <code>respect_sitemap</code> should be <code>true</code>", - "type": [ - "string", - "null" - ] - }, - "custom_user_agent": { - "description": "<em>custom user agent</em><br>optional field<br>custom user agent for crawling a website<br>example: <code>Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36<br></code><br>default value: <code>Mozilla/5.0 (compatible; RSiteAuditor)</code>", - "type": [ - "string", - "null" - ] - }, - "disable_cookie_popup": { - "description": "<em>disable the cookie popup</em><br>optional field<br>set to <code>true</code> if you want to disable the popup requesting cookie consent from the user;<br>default value:<br><code>false</code>", - "type": [ - "boolean", - "null" - ] - }, - "disable_page_checks": { - "description": "<em>prevent certain page checks from running</em><br>optional field<br>specify certain <code>checks</code> to prevent them from running and impacting the <code>onpage_score</code>example:<br><code>\"disable_page_checks\": [\"is_5xx_code\", \"is_4xx_code\"]</code>", - "items": { - "type": "string" - }, - "type": [ - "array", - "null" - ] - }, - "disable_sitewide_checks": { - "description": "<em>prevent certain sitewide checks from running</em><br>optional field<br>specify the following <code>checks</code> to prevent them from running on the <code>target</code> website:<br><code>\"test_page_not_found\"</code><br><code>\"test_canonicalization\"</code><br><code>\"test_https_redirect\"</code><br><code>\"test_directory_browsing\"</code>example:<br><code>\"disable_sitewide_checks\": [\"test_directory_browsing\", \"test_page_not_found\"]</code>learn more on <a href=\"https://dataforseo.com/help-center/how-to-disable-sitewide-checks-in-onpage-api\" target=\"_blank\" rel=\"noopener noreferrer\">our help center</a>", - "items": { - "type": "string" - }, - "type": [ - "array", - "null" - ] - }, - "disallowed_subdomains": { - "description": "<em>subdomains not to crawl</em><br>optional field<br>specify subdomains that you don't want to crawl<br>example: <code>[\"status.site.com\", \"docs.site.com\"]</code><br><strong>Note:</strong> to use this parameter, the <code>allow_subdomains</code> parameter should be set to <code>true</code>", - "items": { - "type": "string" - }, - "type": [ - "array", - "null" - ] - }, - "enable_browser_rendering": { - "description": "<em>emulate browser rendering to measure Core Web Vitals</em><br>optional field<br>by using this parameter you will be able to emulate a browser when loading a web page;<br><code>enable_browser_rendering</code> loads styles, images, fonts, animations, videos, and other resources on a page;<br>default value: <code>false</code><br>set to <code>true</code> to obtain Core Web Vitals (FID, CLS, LCP) metrics in the response;<br><strong>if you use this field, <code>enable_javascript</code>, and <code>load_resources</code> parameters must be set to <code>true</code></strong><br><strong>Note:</strong> if you use this parameter, additional charges will apply; learn more about the cost of tasks with this parameter <a href=\"https://dataforseo.com/help-center/cost-of-onpage-api-parameters\" target=\"_blank\" rel=\"noopener noreferrer\">in our help article</a>; the cost can be calculated on the <a href=\"https://dataforseo.com/pricing/on-page/onpage-api\" target=\"_blank\" rel=\"noopener noreferrer\">Pricing Page</a>", - "type": [ - "boolean", - "null" - ] - }, - "enable_content_parsing": { - "description": "<em>parse content on crawled pages</em><br>optional field<br>set to <code>true</code> to use the <a href=\"/v3/on_page/content_parsing/live/\" target=\"_blank\" rel=\"noopener noreferrer\">OnPage Content Parsing endpoint</a><br>default value: <code>false</code>", - "type": [ - "boolean", - "null" - ] - }, - "enable_javascript": { - "description": "<em>load javascript on a page</em><br>optional field<br>set to <code>true</code> if you want to load the scripts available on a page<br>default value: <code>false</code><br><strong>Note:</strong> if you use this parameter, additional charges will apply; learn more about the cost of tasks with this parameter <a href=\"https://dataforseo.com/help-center/cost-of-onpage-api-parameters\" target=\"_blank\" rel=\"noopener noreferrer\">in our help article</a>; the cost can be calculated on the <a href=\"https://dataforseo.com/pricing/on-page/onpage-api\" target=\"_blank\" rel=\"noopener noreferrer\">Pricing Page</a>", - "type": [ - "boolean", - "null" - ] - }, - "enable_www_redirect_check": { - "description": "<em>check if the domain implemented the www redirection</em><br>optional field<br>set to <code>true</code> if you want to check if the requested domain implemented the www to non-www or non-www to www redirect;<br>default value: <code>false</code>", - "type": [ - "boolean", - "null" - ] - }, - "enable_xhr": { - "description": "<em>enable XMLHttpRequest on a page</em><br>optional field<br>set to <code>true</code> if you want our crawler to request data from a web server using the XMLHttpRequest object<br>default value: <code>false</code>;if you use this field, <code>enable_javascript</code> must be set to <code>true</code>;", - "type": [ - "boolean", - "null" - ] - }, - "force_sitewide_checks": { - "description": "<em>enable sitewide checks when crawling a single page</em><br>optional field<br>set to <code>true</code> to get data on sitewide checks when crawling a single page;<br>default value: <code>false</code>", - "type": [ - "boolean", - "null" - ] - }, - "load_resources": { - "description": "<em>load resources</em><br>optional field<br>set to <code>true</code> if you want to load image, stylesheets, scripts, and broken resources<br>default value: <code>false</code><br><strong>Note:</strong> if you use this parameter, additional charges will apply; learn more about the cost of tasks with this parameter <a href=\"https://dataforseo.com/help-center/cost-of-onpage-api-parameters\" target=\"_blank\" rel=\"noopener noreferrer\">in our help article</a>; the cost can be calculated on the <a href=\"https://dataforseo.com/pricing/on-page/onpage-api\" target=\"_blank\" rel=\"noopener noreferrer\">Pricing Page</a>", - "type": [ - "boolean", - "null" - ] - }, - "max_crawl_depth": { - "description": "<em>crawl depth</em><br>optional field<br>the linking depth of the pages to crawl;<br>for example, starting page of the crawl is level 0, pages that have links from that page are level 1, etc.", - "type": [ - "integer", - "null" - ] - }, - "max_crawl_pages": { - "description": "<em>crawled pages limit</em><br><strong>required field</strong><br>the number of pages to crawl on the specified domain<br><strong>Note:</strong><br>if you set <code>max_crawl_pages</code> to 1 and do not specify <code>start_url</code> or set a homepage in it, the following sitewide checks will be disabled:<br><code>test_canonicalization</code>, <code>enable_www_redirect_check</code>, <code>test_hidden_server_signature</code>, <code>test_page_not_found</code>, <code>test_directory_browsing</code>, <code>test_https_redirect</code><br>to enable them anyway, set <code>force_sitewide_checks</code> to <code>true</code>if you set <code>max_crawl_pages</code> to 1 and specify <code>start_url</code> other than a homepage, all sitewide checks will be disabled;<br>to enable them anyway, set <code>force_sitewide_checks</code> to <code>true</code>", - "type": "integer" - }, - "pingback_url": { - "description": "<em>notification URL of a completed task</em><br>optional field<br>when a task is completed we will notify you by GET request sent to the URL you have specified<br>you can use the ‘$id’ string as a <code>$id</code> variable and ‘$tag’ as urlencoded <code>$tag</code> variable. We will set the necessary values before sending the request.<br>example:<br><code>http://your-server.com/pingscript?id=$id</code><br><code>http://your-server.com/pingscript?id=$id&tag=$tag</code><br><strong>Note:</strong> special characters in <code>pingback_url</code> will be urlencoded;<br>i.a., the <code>#</code> character will be encoded into <code>%23</code><p>learn more on our <a href=\"https://dataforseo.com/help-center/pingbacks-postbacks-with-dataforseo-api\" target=\"_blank\" rel=\"noopener noreferrer\">Help Center</a>", - "type": [ - "string", - "null" - ] - }, - "priority_urls": { - "description": "<em>urls to be crawled bypassing the queue</em><br>optional field<br>URLs specified in this array will be crawled in the first instance, bypassing the crawling queue;<br><strong>Note:</strong> you should specify the absolute URL;<br>you can specify up to <strong>20 URLs</strong>;<br>all URLs in the array must belong to the <code>target</code> domain;<br>subdomains will be ignored unless the <code>allow_subdomains</code> parameter is set to <code>true</code>example:<br>`\"priority_urls\": [<br>\"https://dataforseo.com/apis/serp-api\",<br>\"https://dataforseo.com/contact\"<br>]`", - "items": { - "type": "string" - }, - "type": [ - "array", - "null" - ] - }, - "respect_sitemap": { - "description": "<em>respect sitemap when crawling</em><br>optional field<br>set to <code>true</code> if you want to follow the order of pages indicated in the primary sitemap when crawling;<br>default value: <code>false</code><br><strong>Note:</strong> if set to <code>true</code>, the <code>click_depth</code> value in the API response will equal <code>0</code>;<br>the <code>max_crawl_depth</code> field of the request will be ignored, you can specify the number of pages to crawl using the <code>max_crawl_pages</code> parameter", - "type": [ - "boolean", - "null" - ] - }, - "return_despite_timeout": { - "description": "<em>return data on pages despite the timeout error</em><br>optional field<br>if <code>true</code>, the data will be provided on pages that failed to load within 120 seconds and responded with a timeout error;<br>default value: <code>false</code>", - "type": [ - "boolean", - "null" - ] - }, - "robots_txt_merge_mode": { - "description": "<em>merge with or override robots.txt settings</em><br>optional field<br>possible values: <code>merge</code>, <code>override</code>;<br>set to <code>override</code> if you want to ignore website crawling restrictions and other robots.txt settings<br>default value: <code>merge</code>;<br><strong>Note:</strong> if set to <code>override</code>, specify the <code>custom_robots_txt</code> parameter", - "type": [ - "string", - "null" - ] - }, - "start_url": { - "description": "<em>the first url to crawl </em><br>optional field<br><strong>Note:</strong> you should specify an absolute URL<br>if you want to crawl a single page, specify its URL in this field and additionally set the <code>max_crawl_pages</code> parameter to <code>1</code><br>you can also use the <a href=\"/v3/on_page/instant_pages/?bash\" target=\"_blank\" rel=\"noopener noreferrer\">live Instant Pages endpoint</a> to get page-specific data", - "type": [ - "string", - "null" - ] - }, - "store_raw_html": { - "description": "<em>store HTML of crawled pages</em><br>optional field<br>set to <code>true</code> if you want to get the HTML of the page using the <a href=\"/v3/on_page/raw_html/\" target=\"_blank\" rel=\"noopener noreferrer\">OnPage Raw HTML endpoint</a><br>default value: <code>false</code>", - "type": [ - "boolean", - "null" - ] - }, - "support_cookies": { - "description": "<em>support cookies on crawled pages</em><br>optional field<br>set to <code>true</code> to support cookies when crawling the pages<br>default value: <code>false</code>", - "type": [ - "boolean", - "null" - ] - }, - "switch_pool": { - "description": "<em>switch proxy pool</em><br>optional field<br>if <code>true</code>, additional proxy pools will be used to obtain the requested data;<br>the parameter can be used if a multitude of tasks is set simultaneously, resulting in occasional <code>rate-limit</code> and/or <code>site_unreachable</code> errors", - "type": [ - "boolean", - "null" - ] - }, - "tag": { - "description": "<em>user-defined task identifier</em><br>optional field<br><em>the character limit is 255</em><br>you can use this parameter to identify the task and match it with the result<br>you will find the specified <code>tag</code> value in the <code>data</code> object of the response", - "type": [ - "string", - "null" - ] - }, - "target": { - "description": "<em>target domain</em><br><strong>required field</strong><br>domain name should be specified without <code>https://</code> and <code>www.</code><br>if you specify the page URL, the results will be returned for the domain included in the URL", - "type": "string" - }, - "validate_micromarkup": { - "description": "<em>enable microdata validation</em><br>optional field<br>set to <code>true</code> if you want to use the <a href=\"/v3/on_page/microdata/\" target=\"_blank\" rel=\"noopener noreferrer\">OnPage API Microdata endpoint</a><br>default value: <code>false</code>", - "type": [ - "boolean", - "null" - ] - } - }, - "type": "object" - } -]New value: +[ + { + "properties": { + "accept_language": { + "description": "<em>language header for accessing the website</em><br>optional field<br>all locale formats are supported (xx, xx-XX, xxx-XX, etc.)<br><strong>Note:</strong> if you do not specify this parameter, some websites may deny access; in this case, pages will be returned with the <code>\"type\":\"broken</code> in the response array", + "type": [ + "string", + "null" + ] + }, + "allow_subdomains": { + "description": "<em>include pages on subdomains</em><br>optional field<br>set to <code>true</code> if you want to crawl all subdomains of a target website<br>default value: <code>false</code>", + "type": [ + "boolean", + "null" + ] + }, + "allowed_subdomains": { + "description": "<em>subdomains to crawl</em><br>optional field<br>specify subdomains that you want to crawl<br>example: <code>[\"blog.site.com\", \"my.site.com\", \"shop.site.com\"]</code><br><strong>Note:</strong> to use this parameter, the <code>allow_subdomains</code> parameter should be set to <code>false</code>;<br>otherwise, the content of <code>allowed_subdomains</code> field will be ignored and the results will be returned for all subdomains", + "items": { + "type": "string" + }, + "type": [ + "array", + "null" + ] + }, + "browser_preset": { + "description": "<em>preset for browser screen parameters</em><br>optional field<br>if you use this field, you don't need to indicate <code>browser_screen_width</code>, <code>browser_screen_height</code>, <code>browser_screen_scale_factor</code>possible values:<br><code>desktop</code>, <code>mobile</code>, <code>tablet</code><code>desktop</code> preset will apply the following values:<code>browser_screen_width: 1920</code><br><code>browser_screen_height: 1080</code><br><code>browser_screen_scale_factor: 1</code><code>mobile</code> preset will apply the following values:<code>browser_screen_width: 390</code><br><code>browser_screen_height: 844</code><br><code>browser_screen_scale_factor: 3</code><code>tablet</code> preset will apply the following values:<code>browser_screen_width: 1024</code><br><code>browser_screen_height: 1366</code><br><code>browser_screen_scale_factor: 2</code><br><strong>Note:</strong> to use this parameter, set <code>enable_javascript</code> or <code>enable_browser_rendering</code> to <code>true</code>", + "type": [ + "string", + "null" + ] + }, + "browser_screen_height": { + "description": "<em>browser screen height</em><br>optional field<br>you can set a custom browser screen height to perform an audit for a particular device;<br>if you use this field, you don't need to indicate <code>browser_preset</code> as it will be ignored;<br><strong>Note:</strong> to use this parameter, set <code>enable_javascript</code> or <code>enable_browser_rendering</code> to <code>true</code>minimum value, in pixels: <code>240</code><br>maximum value, in pixels: <code>9999</code>", + "type": [ + "integer", + "null" + ] + }, + "browser_screen_scale_factor": { + "description": "<em>browser screen scale factor</em><br>optional field<br>you can set a custom browser screen resolution ratio to perform audit for a particular device;<br>if you use this field, you don't need to indicate <code>browser_preset</code> as it will be ignored;<br><strong>Note:</strong> to use this parameter, set <code>enable_javascript</code> or <code>enable_browser_rendering</code> to <code>true</code>minimum value: <code>0.5</code><br>maximum value: <code>3</code>", + "type": [ + "number", + "null" + ] + }, + "browser_screen_width": { + "description": "<em>browser screen width</em><br>optional field<br>you can set a custom browser screen width to perform audit for a particular device;<br>if you use this field, you don't need to indicate <code>browser_preset</code> as it will be ignored;<br><strong>Note:</strong> to use this parameter, set <code>enable_javascript</code> or <code>enable_browser_rendering</code> to <code>true</code>minimum value, in pixels: <code>240</code><br>maximum value, in pixels: <code>9999</code>", + "format": "int64", + "type": [ + "integer", + "null" + ] + }, + "calculate_keyword_density": { + "description": "<em>calculate keyword density for the target domain</em><br>optional field<br>set to <code>true</code> if you want to calculate keyword density for website pages<br>default value: <code>false</code><br><strong>Note:</strong> if you use this parameter, additional charges will apply; learn more about the cost of tasks with this parameter <a href=\"https://dataforseo.com/help-center/cost-of-onpage-api-parameters\" target=\"_blank\" rel=\"noopener noreferrer\">in our help article</a><br>once the crawl is completed, you can obtain keyword density values with <a href=\"/v3/on_page/keyword_density?bash\" target=\"_blank\" rel=\"noopener noreferrer\">the Keyword Density endpoint</a>", + "type": [ + "boolean", + "null" + ] + }, + "check_spell": { + "description": "<em>check spelling</em><br>optional field<br>set to <code>true</code> to check spelling on a website using <a href=\"http://hunspell.github.io/\" target=\"_blank\" rel=\"noopener noreferrer\">Hunspell</a> library<br>default value: <code>false</code>", + "type": [ + "boolean", + "null" + ] + }, + "check_spell_exceptions": { + "description": "<em>words excluded from spell check</em><br>optional field<br>specify the words that you want to exclude from spell check<br>maximum word length: 100 characters<br>maximum amount of words: 1000<br>example: <code>\"SERP\", \"minifiers\", \"JavaScript\"</code>", + "items": { + "type": "string" + }, + "type": [ + "array", + "null" + ] + }, + "check_spell_language": { + "description": "<em>language of the spell check</em><br>optional field<br>supported languages: 'hy', 'eu', 'bg', 'ca', 'hr', 'cs', 'da', 'nl', 'en', 'eo', 'et', 'fo', 'fa', 'fr', 'fy', 'gl', 'ka', 'de', 'el', 'he', 'hu', 'is', 'ia', 'ga', 'it', 'rw', 'la', 'lv', 'lt', 'mk', 'mn', 'ne', 'nb', 'nn', 'pl', 'pt', 'ro', 'gd', 'sr', 'sk', 'sl', 'es', 'sv', 'tr', 'tk', 'uk', 'vi'<br><strong>Note:</strong> if no language is specified, it will be set automatically based on page content", + "type": [ + "string", + "null" + ] + }, + "checks_threshold": { + "additionalProperties": { + "format": "int64", + "type": [ + "integer", + "null" + ] + }, + "description": "<em>custom threshold values for checks</em><br>optional field<br>you can specify custom threshold values for the parameters included in the <code>checks</code> object of OnPage API responses;<br><strong>Note:</strong> only integer threshold values can be modified;<br>for example, the <code>high_loading_time</code> and <code>large_page_size</code> parameters are set to 3 seconds and 1 megabyte respectively by default;<br>if you want to change these thresholds to 1 second and 1000 kbytes, use the following snippet:<br>`\"checks_threshold\": {<br>\"high_loading_time\": 1,<br>\"large_page_size\": 1000<br>}`<br>available customizable parameters with default values:<br>`\"title_too_short\", default value: 30, type: \"int\"<br>\"title_too_long\", default value: 65, type: \"int\"<br>\"small_page_size\", default value: 1024, type: \"int\"<br>\"large_page_size\", default value: 1048576 (1024 * 1024), type: \"int\"<br>\"low_character_count\", default value: 1024, type: \"int\"<br>\"high_character_count\", default value: 256000 (250 * 1024), type: \"int\"<br>\"low_content_rate\", default value: 0.1, type: \"float\"<br>\"high_content_rate\", default value: 0.9, type: \"float\"<br>\"high_loading_time\", default value: 3000, type: \"int\"<br>\"high_waiting_time\", default value: 1500, type: \"int\"<br>\"low_readability_rate\", default value: 15.0, type: \"float\"<br>\"irrelevant_description\", default value: 0.2, type: \"float\"<br>\"irrelevant_title\", default value: 0.3, type: \"float\"<br>\"irrelevant_meta_keywords\", default value: 0.6, type: \"float\"`", + "type": [ + "object", + "null" + ] + }, + "crawl_delay": { + "description": "<em>delay between hits, ms</em><br>optional field<br>the custom delay between crawler hits to the server<br>default value: <code>2000</code>", + "type": [ + "integer", + "null" + ] + }, + "crawl_sitemap_only": { + "description": "<em>crawl only pages indicated in the sitemap</em><br>optional field<br>set to <code>true</code> if you want to crawl only the pages indicated in the sitemap<br>if you set this parameter to <code>true</code> and do not specify <code>custom_sitemap</code>, we will crawl the default sitemap<br>default value: <code>false</code><br><strong>Note:</strong> if you want to use this parameter, <code>respect_sitemap</code> should be <code>true</code>", + "type": [ + "boolean", + "null" + ] + }, + "custom_js": { + "description": "<em>custom javascript</em><br>optional field<br><strong>Note</strong> that the execution time for the script you enter here should be 700 ms maximum, for example, you can use the following JS snippet to check if the website contains Google Tag Manager as a <code>scr</code> attribute:<br><code>let meta = { haveGoogleAnalytics: false, haveTagManager: false };rnfor (var i = 0; i < document.scripts.length; i++) {rn let src = document.scripts[i].getAttribute(\"src\");rn if (src != undefined) {rn if (src.indexOf(\"analytics.js\") >= 0)rn meta.haveGoogleAnalytics = true;rntif (src.indexOf(\"gtm.js\") >= 0)rn meta.haveTagManager = true;rn }rn}rnmeta;</code>the returned value depends on what you specified in this field. For instance, if you specify the following script:<br>`meta = {}; meta.url = document.URL; meta.test = 'test'; meta;`<br>as a response you will receive the following data:<br>`\"custom_js_response\": {<br>\"url\": \"https://dataforseo.com/\",<br>\"test\": \"test\"<br>}`<br><strong>Note:</strong> the length of the script you enter must be no more than 2000 characters", + "type": [ + "string", + "null" + ] + }, + "custom_robots_txt": { + "description": "<em>custom robots.txt settings</em><br>optional field<br>example: <code>Disallow: /directory1/</code>", + "type": [ + "string", + "null" + ] + }, + "custom_sitemap": { + "description": "<em>custom sitemap url</em><br>optional field<br>the URL of the page where the alternative sitemap is located<br><strong>Note:</strong> if you want to use this parameter, <code>respect_sitemap</code> should be <code>true</code>", + "type": [ + "string", + "null" + ] + }, + "custom_user_agent": { + "description": "<em>custom user agent</em><br>optional field<br>custom user agent for crawling a website<br>example: <code>Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36<br></code><br>default value: <code>Mozilla/5.0 (compatible; RSiteAuditor)</code>", + "type": [ + "string", + "null" + ] + }, + "disable_cookie_popup": { + "description": "<em>disable the cookie popup</em><br>optional field<br>set to <code>true</code> if you want to disable the popup requesting cookie consent from the user;<br>default value:<br><code>false</code>", + "type": [ + "boolean", + "null" + ] + }, + "disable_page_checks": { + "description": "<em>prevent certain page checks from running</em><br>optional field<br>specify certain <code>checks</code> to prevent them from running and impacting the <code>onpage_score</code>example:<br><code>\"disable_page_checks\": [\"is_5xx_code\", \"is_4xx_code\"]</code>", + "items": { + "type": "string" + }, + "type": [ + "array", + "null" + ] + }, + "disable_sitewide_checks": { + "description": "<em>prevent certain sitewide checks from running</em><br>optional field<br>specify the following <code>checks</code> to prevent them from running on the <code>target</code> website:<br><code>\"test_page_not_found\"</code><br><code>\"test_canonicalization\"</code><br><code>\"test_https_redirect\"</code><br><code>\"test_directory_browsing\"</code>example:<br><code>\"disable_sitewide_checks\": [\"test_directory_browsing\", \"test_page_not_found\"]</code>learn more on <a href=\"https://dataforseo.com/help-center/how-to-disable-sitewide-checks-in-onpage-api\" target=\"_blank\" rel=\"noopener noreferrer\">our help center</a>", + "items": { + "type": "string" + }, + "type": [ + "array", + "null" + ] + }, + "disallowed_subdomains": { + "description": "<em>subdomains not to crawl</em><br>optional field<br>specify subdomains that you don't want to crawl<br>example: <code>[\"status.site.com\", \"docs.site.com\"]</code><br><strong>Note:</strong> to use this parameter, the <code>allow_subdomains</code> parameter should be set to <code>true</code>", + "items": { + "type": "string" + }, + "type": [ + "array", + "null" + ] + }, + "enable_browser_rendering": { + "description": "<em>emulate browser rendering to measure Core Web Vitals</em><br>optional field<br>by using this parameter you will be able to emulate a browser when loading a web page;<br><code>enable_browser_rendering</code> loads styles, images, fonts, animations, videos, and other resources on a page;<br>default value: <code>false</code><br>set to <code>true</code> to obtain Core Web Vitals (FID, CLS, LCP) metrics in the response;<br><strong>if you use this field, <code>enable_javascript</code>, and <code>load_resources</code> parameters must be set to <code>true</code></strong><br><strong>Note:</strong> if you use this parameter, additional charges will apply; learn more about the cost of tasks with this parameter <a href=\"https://dataforseo.com/help-center/cost-of-onpage-api-parameters\" target=\"_blank\" rel=\"noopener noreferrer\">in our help article</a>; the cost can be calculated on the <a href=\"https://dataforseo.com/pricing/on-page/onpage-api\" target=\"_blank\" rel=\"noopener noreferrer\">Pricing Page</a>", + "type": [ + "boolean", + "null" + ] + }, + "enable_content_parsing": { + "description": "<em>parse content on crawled pages</em><br>optional field<br>set to <code>true</code> to use the <a href=\"/v3/on_page/content_parsing/live/\" target=\"_blank\" rel=\"noopener noreferrer\">OnPage Content Parsing endpoint</a><br>default value: <code>false</code>", + "type": [ + "boolean", + "null" + ] + }, + "enable_javascript": { + "description": "<em>load javascript on a page</em><br>optional field<br>set to <code>true</code> if you want to load the scripts available on a page<br>default value: <code>false</code><br><strong>Note:</strong> if you use this parameter, additional charges will apply; learn more about the cost of tasks with this parameter <a href=\"https://dataforseo.com/help-center/cost-of-onpage-api-parameters\" target=\"_blank\" rel=\"noopener noreferrer\">in our help article</a>; the cost can be calculated on the <a href=\"https://dataforseo.com/pricing/on-page/onpage-api\" target=\"_blank\" rel=\"noopener noreferrer\">Pricing Page</a>", + "type": [ + "boolean", + "null" + ] + }, + "enable_www_redirect_check": { + "description": "<em>check if the domain implemented the www redirection</em><br>optional field<br>set to <code>true</code> if you want to check if the requested domain implemented the www to non-www or non-www to www redirect;<br>default value: <code>false</code>", + "type": [ + "boolean", + "null" + ] + }, + "enable_xhr": { + "description": "<em>enable XMLHttpRequest on a page</em><br>optional field<br>set to <code>true</code> if you want our crawler to request data from a web server using the XMLHttpRequest object<br>default value: <code>false</code>;if you use this field, <code>enable_javascript</code> must be set to <code>true</code>;", + "type": [ + "boolean", + "null" + ] + }, + "force_sitewide_checks": { + "description": "<em>enable sitewide checks when crawling a single page</em><br>optional field<br>set to <code>true</code> to get data on sitewide checks when crawling a single page;<br>default value: <code>false</code>", + "type": [ + "boolean", + "null" + ] + }, + "load_resources": { + "description": "<em>load resources</em><br>optional field<br>set to <code>true</code> if you want to load image, stylesheets, scripts, and broken resources<br>default value: <code>false</code><br><strong>Note:</strong> if you use this parameter, additional charges will apply; learn more about the cost of tasks with this parameter <a href=\"https://dataforseo.com/help-center/cost-of-onpage-api-parameters\" target=\"_blank\" rel=\"noopener noreferrer\">in our help article</a>; the cost can be calculated on the <a href=\"https://dataforseo.com/pricing/on-page/onpage-api\" target=\"_blank\" rel=\"noopener noreferrer\">Pricing Page</a>", + "type": [ + "boolean", + "null" + ] + }, + "max_crawl_depth": { + "description": "<em>crawl depth</em><br>optional field<br>the linking depth of the pages to crawl;<br>for example, starting page of the crawl is level 0, pages that have links from that page are level 1, etc.", + "type": [ + "integer", + "null" + ] + }, + "max_crawl_pages": { + "description": "<em>crawled pages limit</em><br><strong>required field</strong><br>the number of pages to crawl on the specified domain<br><strong>Note:</strong><br>if you set <code>max_crawl_pages</code> to 1 and do not specify <code>start_url</code> or set a homepage in it, the following sitewide checks will be disabled:<br><code>test_canonicalization</code>, <code>enable_www_redirect_check</code>, <code>test_hidden_server_signature</code>, <code>test_page_not_found</code>, <code>test_directory_browsing</code>, <code>test_https_redirect</code><br>to enable them anyway, set <code>force_sitewide_checks</code> to <code>true</code>if you set <code>max_crawl_pages</code> to 1 and specify <code>start_url</code> other than a homepage, all sitewide checks will be disabled;<br>to enable them anyway, set <code>force_sitewide_checks</code> to <code>true</code>", + "type": "integer" + }, + "pingback_url": { + "description": "<em>notification URL of a completed task</em><br>optional field<br>when a task is completed we will notify you by GET request sent to the URL you have specified<br>you can use the ‘$id’ string as a <code>$id</code> variable and ‘$tag’ as urlencoded <code>$tag</code> variable. We will set the necessary values before sending the request.<br>example:<br><code>http://your-server.com/pingscript?id=$id</code><br><code>http://your-server.com/pingscript?id=$id&tag=$tag</code><br><strong>Note:</strong> special characters in <code>pingback_url</code> will be urlencoded;<br>i.a., the <code>#</code> character will be encoded into <code>%23</code><p>learn more on our <a href=\"https://dataforseo.com/help-center/pingbacks-postbacks-with-dataforseo-api\" target=\"_blank\" rel=\"noopener noreferrer\">Help Center</a>", + "type": [ + "string", + "null" + ] + }, + "priority_urls": { + "description": "<em>urls to be crawled bypassing the queue</em><br>optional field<br>URLs specified in this array will be crawled in the first instance, bypassing the crawling queue;<br><strong>Note:</strong> you should specify the absolute URL;<br>you can specify up to <strong>20 URLs</strong>;<br>all URLs in the array must belong to the <code>target</code> domain;<br>subdomains will be ignored unless the <code>allow_subdomains</code> parameter is set to <code>true</code>example:<br>`\"priority_urls\": [<br>\"https://dataforseo.com/apis/serp-api\",<br>\"https://dataforseo.com/contact\"<br>]`", + "items": { + "type": "string" + }, + "type": [ + "array", + "null" + ] + }, + "respect_sitemap": { + "description": "<em>respect sitemap when crawling</em><br>optional field<br>set to <code>true</code> if you want to follow the order of pages indicated in the primary sitemap when crawling;<br>default value: <code>false</code><br><strong>Note:</strong> if set to <code>true</code>, the <code>click_depth</code> value in the API response will equal <code>0</code>;<br>the <code>max_crawl_depth</code> field of the request will be ignored, you can specify the number of pages to crawl using the <code>max_crawl_pages</code> parameter", + "type": [ + "boolean", + "null" + ] + }, + "return_despite_timeout": { + "description": "<em>return data on pages despite the timeout error</em><br>optional field<br>if <code>true</code>, the data will be provided on pages that failed to load within 120 seconds and responded with a timeout error;<br>default value: <code>false</code>", + "type": [ + "boolean", + "null" + ] + }, + "robots_txt_merge_mode": { + "description": "<em>merge with or override robots.txt settings</em><br>optional field<br>possible values: <code>merge</code>, <code>override</code>;<br>set to <code>override</code> if you want to ignore website crawling restrictions and other robots.txt settings<br>default value: <code>merge</code>;<br><strong>Note:</strong> if set to <code>override</code>, specify the <code>custom_robots_txt</code> parameter", + "type": [ + "string", + "null" + ] + }, + "start_url": { + "description": "<em>the first url to crawl </em><br>optional field<br><strong>Note:</strong> you should specify an absolute URL<br>if you want to crawl a single page, specify its URL in this field and additionally set the <code>max_crawl_pages</code> parameter to <code>1</code><br>you can also use the <a href=\"/v3/on_page/instant_pages/?bash\" target=\"_blank\" rel=\"noopener noreferrer\">live Instant Pages endpoint</a> to get page-specific data", + "type": [ + "string", + "null" + ] + }, + "store_raw_html": { + "description": "<em>store HTML of crawled pages</em><br>optional field<br>set to <code>true</code> if you want to get the HTML of the page using the <a href=\"/v3/on_page/raw_html/\" target=\"_blank\" rel=\"noopener noreferrer\">OnPage Raw HTML endpoint</a><br>default value: <code>false</code>", + "type": [ + "boolean", + "null" + ] + }, + "support_cookies": { + "description": "<em>support cookies on crawled pages</em><br>optional field<br>set to <code>true</code> to support cookies when crawling the pages<br>default value: <code>false</code>", + "type": [ + "boolean", + "null" + ] + }, + "switch_pool": { + "description": "<em>switch proxy pool</em><br>optional field<br>if <code>true</code>, additional proxy pools will be used to obtain the requested data;<br>the parameter can be used if a multitude of tasks is set simultaneously, resulting in occasional <code>rate-limit</code> and/or <code>site_unreachable</code> errors", + "type": [ + "boolean", + "null" + ] + }, + "tag": { + "description": "<em>user-defined task identifier</em><br>optional field<br><em>the character limit is 255</em><br>you can use this parameter to identify the task and match it with the result<br>you will find the specified <code>tag</code> value in the <code>data</code> object of the response", + "type": [ + "string", + "null" + ] + }, + "target": { + "description": "<em>target domain</em><br><strong>required field</strong><br>domain name should be specified without <code>https://</code> and <code>www.</code><br>if you specify the page URL, the results will be returned for the domain included in the URL", + "type": "string" + }, + "validate_micromarkup": { + "description": "<em>enable microdata validation</em><br>optional field<br>set to <code>true</code> if you want to use the <a href=\"/v3/on_page/microdata/\" target=\"_blank\" rel=\"noopener noreferrer\">OnPage API Microdata endpoint</a><br>default value: <code>false</code>", + "type": [ + "boolean", + "null" + ] + } + }, + "type": "object" + } +]
- Changed
post_dataforseo_on_page_uncrawlable_resources3 fields changed- added
Input schema / $defsAdded value: +{ + "Provider0A3E90081762_AisaDataforseoFilterJsonValue": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "number" + }, + { + "type": "boolean" + }, + { + "additionalProperties": { + "$ref": "#/$defs/Provider0A3E90081762_AisaDataforseoFilterJsonValue" + }, + "type": [ + "object", + "null" + ] + }, + { + "items": { + "$ref": "#/$defs/Provider0A3E90081762_AisaDataforseoFilterJsonValue" + }, + "type": "array" + } + ], + "description": "JSON representation of filter values and nested expressions. Field names, operators, condition counts and operand compatibility remain provider-validated as documented for each endpoint; this is not a complete filter-language validator." + } +} - added
Input schema / properties / body / items / anyOfAdded value: +[ + { + "properties": { + "filters": { + "description": "<em>array of results filtering parameters</em><br>optional field<br><strong>you can add several filters at once (8 filters maximum)</strong><br>you should set a logical operator <code>and</code>, <code>or</code> between the conditions<br>the following operators are supported:<br><code>regex</code>, <code>not_regex</code>, <code><</code>, <code><=</code>, <code>></code>, <code>>=</code>, <code>=</code>, <code><></code>, <code>in</code>, <code>not_in</code>, <code>like</code>, <code>not_like</code><br>you can use the <code>%</code> operator with <code>like</code> and <code>not_like</code> to match any string of zero or more characters<br>example:<br><code> [[\"meta.content_type\",\"=\",\"image/jpeg\"],<br>\"and\",<br>[\"url\",\"not_like\",\"%/help-center/%\"]]</code><p>The full list of possible filters is available <a href=\"/v3/on_page/filters_and_thresholds/?bash\" target=\"_blank\" rel=\"noopener noreferrer\">by this link.</a>", + "items": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "number" + }, + { + "type": "boolean" + }, + { + "additionalProperties": { + "$ref": "#/$defs/Provider0A3E90081762_AisaDataforseoFilterJsonValue" + }, + "type": [ + "object", + "null" + ] + }, + { + "items": { + "$ref": "#/$defs/Provider0A3E90081762_AisaDataforseoFilterJsonValue" + }, + "type": "array" + } + ], + "description": "JSON representation of filter values and nested expressions. Field names, operators, condition counts and operand compatibility remain provider-validated as documented for each endpoint; this is not a complete filter-language validator." + }, + "type": [ + "array", + "null" + ] + }, + "id": { + "description": "<em>ID of the task</em><br><strong>required field</strong><br>you can get this ID in the response of the <a href=\"/v3/on_page/task_post/\">Task POST</a> endpoint<br>example:<br>\"07131248-1535-0216-1000-17384017ad04\"", + "type": "string" + }, + "limit": { + "description": "<em>the maximum number of returned uncrawlable resources</em><br>optional field<br>default value: <code>100</code><br>maximum value: <code>1000</code>", + "type": [ + "integer", + "null" + ] + }, + "offset": { + "description": "<em>offset in the results array of returned uncrawlable resources</em><br>optional field<br>default value: <code>0</code><br> maximum value: <code>2000000</code><br>if you specify the <code>10</code> value, the first ten invalid resources in the results array will be omitted and the data will be provided for the successive invalid resources", + "type": [ + "integer", + "null" + ] + }, + "order_by": { + "description": "<em>results sorting rules</em><br>optional field<br>you can use the same values as in the <code>filters</code> array to sort the results<br>possible sorting types:<br><code>asc</code> - results will be sorted in the ascending order<br><code>desc</code> - results will be sorted in the descending order<br>you should use a comma to set up a sorting type<br>example:<br><code>[\"meta.content_type,desc\"]</code><br><strong>note that you can set no more than three sorting rules in a single request</strong><br>you should use a comma to separate several sorting rules<br>example:<br><code>[\"meta.content_type,asc\",\"fetch_time,desc\"]</code>", + "items": { + "type": "string" + }, + "type": [ + "array", + "null" + ] + } + }, + "type": "object" + } +] - removed
Input schema / properties / body / items / oneOfRemoved value: -[ - { - "example": [ - { - "filters": [ - [ - "meta.content_type", - "=", - "image/jpeg" - ], - "and", - [ - "url", - "like", - "%go%" - ] - ], - "id": "07281559-0695-0216-0000-c269be8b7592", - "limit": 10 - } - ], - "properties": { - "filters": { - "description": "<em>array of results filtering parameters</em><br>optional field<br><strong>you can add several filters at once (8 filters maximum)</strong><br>you should set a logical operator <code>and</code>, <code>or</code> between the conditions<br>the following operators are supported:<br><code>regex</code>, <code>not_regex</code>, <code><</code>, <code><=</code>, <code>></code>, <code>>=</code>, <code>=</code>, <code><></code>, <code>in</code>, <code>not_in</code>, <code>like</code>, <code>not_like</code><br>you can use the <code>%</code> operator with <code>like</code> and <code>not_like</code> to match any string of zero or more characters<br>example:<br><code> [[\"meta.content_type\",\"=\",\"image/jpeg\"],<br>\"and\",<br>[\"url\",\"not_like\",\"%/help-center/%\"]]</code><p>The full list of possible filters is available <a href=\"/v3/on_page/filters_and_thresholds/?bash\" target=\"_blank\" rel=\"noopener noreferrer\">by this link.</a>", - "items": { - "type": [ - "object", - "null" - ] - }, - "type": [ - "array", - "null" - ] - }, - "id": { - "description": "<em>ID of the task</em><br><strong>required field</strong><br>you can get this ID in the response of the <a href=\"/v3/on_page/task_post/\">Task POST</a> endpoint<br>example:<br>\"07131248-1535-0216-1000-17384017ad04\"", - "type": "string" - }, - "limit": { - "description": "<em>the maximum number of returned uncrawlable resources</em><br>optional field<br>default value: <code>100</code><br>maximum value: <code>1000</code>", - "type": [ - "integer", - "null" - ] - }, - "offset": { - "description": "<em>offset in the results array of returned uncrawlable resources</em><br>optional field<br>default value: <code>0</code><br> maximum value: <code>2000000</code><br>if you specify the <code>10</code> value, the first ten invalid resources in the results array will be omitted and the data will be provided for the successive invalid resources", - "type": [ - "integer", - "null" - ] - }, - "order_by": { - "description": "<em>results sorting rules</em><br>optional field<br>you can use the same values as in the <code>filters</code> array to sort the results<br>possible sorting types:<br><code>asc</code> - results will be sorted in the ascending order<br><code>desc</code> - results will be sorted in the descending order<br>you should use a comma to set up a sorting type<br>example:<br><code>[\"meta.content_type,desc\"]</code><br><strong>note that you can set no more than three sorting rules in a single request</strong><br>you should use a comma to separate several sorting rules<br>example:<br><code>[\"meta.content_type,asc\",\"fetch_time,desc\"]</code>", - "items": { - "type": "string" - }, - "type": [ - "array", - "null" - ] - } - }, - "type": "object" - } -]
- Changed
post_dataforseo_on_page_waterfall1 field changed- changed
Input schema / properties / body / items / oneOfPrevious value: -[ - { - "example": [ - { - "id": "08101204-0696-0216-0000-644a7b21a48a", - "url": "https://dataforseo.com/tag/broken-links" - } - ], - "properties": { - "id": { - "description": "<em>ID of the task</em><br><strong>required field</strong><br>you can get this ID in the response of the <a href=\"/v3/on_page/task_post/\">Task POST</a> endpoint<br>example:<br>\"07131248-1535-0216-1000-17384017ad04\"", - "type": "string" - }, - "tag": { - "description": "<em>user-defined task identifier</em><br>optional field<br><em>the character limit is 255</em><br>you can use this parameter to identify the task and match it with the result<br>you will find the specified <code>tag</code> value in the <code>data</code> object of the response", - "type": [ - "string", - "null" - ] - }, - "url": { - "description": "<em>page URL</em><br><strong>required field</strong><br>specify the pages you want to receive timing for", - "type": "string" - } - }, - "type": "object" - } -]New value: +[ + { + "properties": { + "id": { + "description": "<em>ID of the task</em><br><strong>required field</strong><br>you can get this ID in the response of the <a href=\"/v3/on_page/task_post/\">Task POST</a> endpoint<br>example:<br>\"07131248-1535-0216-1000-17384017ad04\"", + "type": "string" + }, + "tag": { + "description": "<em>user-defined task identifier</em><br>optional field<br><em>the character limit is 255</em><br>you can use this parameter to identify the task and match it with the result<br>you will find the specified <code>tag</code> value in the <code>data</code> object of the response", + "type": [ + "string", + "null" + ] + }, + "url": { + "description": "<em>page URL</em><br><strong>required field</strong><br>specify the pages you want to receive timing for", + "type": "string" + } + }, + "type": "object" + } +]
14 tool updates
- Changed
post_dataforseo_on_page_content_parsing2 fields changed- removed
Input schema / properties / body / items / anyOfRemoved value: -[ - { - "example": [ - { - "id": "11161551-1535-0216-0000-500b3f307f92", - "url": "https://dataforseo.com/blog/a-versatile-alternative-to-google-trends-exploring-the-power-of-dataforseo-trends-api" - } - ], - "properties": { - "id": { - "description": "<em>ID of the task</em><br><strong>required field</strong><br>you can get this ID in the response of the <a href=\"/v3/on_page/task_post/\">Task POST</a> endpoint<br><strong>note:</strong> the <code>enable_content_parsing</code> parameter in the POST request must be set to <code>true</code><br>example:<br><code>\"07131248-1535-0216-1000-17384017ad04\"</code>", - "type": "string" - }, - "markdown_view": { - "description": "<em>return page content as markdown</em><br>optional field<br>if set to <code>true</code>, the markdown-formatted content of the page will be returned in the <code>page_as_markdown</code> field of the response;<br>default value: <code>false</code>", - "type": [ - "boolean", - "null" - ] - }, - "url": { - "description": "<em>URL of the content to parse</em><br><strong>required field</strong><br>URL of the page to parse<br>example:<br>`https://dataforseo.com/blog/a-versatile-alternative-to-google-trends-exploring-the-power-of-dataforseo-trends-api`", - "type": "string" - } - }, - "type": "object" - } -] - added
Input schema / properties / body / items / oneOfAdded value: +[ + { + "example": [ + { + "id": "11161551-1535-0216-0000-500b3f307f92", + "url": "https://dataforseo.com/blog/a-versatile-alternative-to-google-trends-exploring-the-power-of-dataforseo-trends-api" + } + ], + "properties": { + "id": { + "description": "<em>ID of the task</em><br><strong>required field</strong><br>you can get this ID in the response of the <a href=\"/v3/on_page/task_post/\">Task POST</a> endpoint<br><strong>note:</strong> the <code>enable_content_parsing</code> parameter in the POST request must be set to <code>true</code><br>example:<br><code>\"07131248-1535-0216-1000-17384017ad04\"</code>", + "type": "string" + }, + "markdown_view": { + "description": "<em>return page content as markdown</em><br>optional field<br>if set to <code>true</code>, the markdown-formatted content of the page will be returned in the <code>page_as_markdown</code> field of the response;<br>default value: <code>false</code>", + "type": [ + "boolean", + "null" + ] + }, + "url": { + "description": "<em>URL of the content to parse</em><br><strong>required field</strong><br>URL of the page to parse<br>example:<br>`https://dataforseo.com/blog/a-versatile-alternative-to-google-trends-exploring-the-power-of-dataforseo-trends-api`", + "type": "string" + } + }, + "type": "object" + } +]
- Changed
post_dataforseo_on_page_duplicate_content2 fields changed- removed
Input schema / properties / body / items / anyOfRemoved value: -[ - { - "example": [ - { - "id": "07281559-0695-0216-0000-c269be8b7592", - "url": "https://www.etsy.com/" - } - ], - "properties": { - "id": { - "description": "<em>ID of the task</em><br><strong>required field</strong><br>you can get this ID in the response of the <a href=\"https://docs.dataforseo.com/v3/on_page/task_post/\">Task POST</a> endpoint<br>example:<br>\"07131248-1535-0216-1000-17384017ad04\"", - "type": "string" - }, - "limit": { - "description": "<em>the maximum number of returned pages</em><br>optional field<br>default value: <code>100</code><br>maximum value: <code>1000</code>", - "type": [ - "integer", - "null" - ] - }, - "offset": { - "description": "<em>offset in the results array of returned pages</em><br>optional field<br>default value: <code>0</code><br>maximum value: <code>2000000</code><br>if you specify the <code>10</code> value, the first ten pages in the results array will be omitted and the data will be provided for the successive pages", - "type": [ - "integer", - "null" - ] - }, - "similarity": { - "description": "<em>content similarity score</em><br>by default, the content is considered duplicate if the value is greater than or equals <code>6</code><br>you can specify any similarity score in the 0-to-10 range", - "type": [ - "integer", - "null" - ] - }, - "tag": { - "description": "<em>user-defined task identifier</em><br>optional field<br><em>the character limit is 255</em><br>you can use this parameter to identify the task and match it with the result<br>you will find the specified <code>tag</code> value in the <code>data</code> object of the response", - "type": [ - "string", - "null" - ] - }, - "url": { - "description": "<em>page URL</em><br><strong>required field</strong><br>specify the initial page you want to receive duplicate content for", - "type": "string" - } - }, - "type": "object" - } -] - added
Input schema / properties / body / items / oneOfAdded value: +[ + { + "example": [ + { + "id": "07281559-0695-0216-0000-c269be8b7592", + "url": "https://www.etsy.com/" + } + ], + "properties": { + "id": { + "description": "<em>ID of the task</em><br><strong>required field</strong><br>you can get this ID in the response of the <a href=\"https://docs.dataforseo.com/v3/on_page/task_post/\">Task POST</a> endpoint<br>example:<br>\"07131248-1535-0216-1000-17384017ad04\"", + "type": "string" + }, + "limit": { + "description": "<em>the maximum number of returned pages</em><br>optional field<br>default value: <code>100</code><br>maximum value: <code>1000</code>", + "type": [ + "integer", + "null" + ] + }, + "offset": { + "description": "<em>offset in the results array of returned pages</em><br>optional field<br>default value: <code>0</code><br>maximum value: <code>2000000</code><br>if you specify the <code>10</code> value, the first ten pages in the results array will be omitted and the data will be provided for the successive pages", + "type": [ + "integer", + "null" + ] + }, + "similarity": { + "description": "<em>content similarity score</em><br>by default, the content is considered duplicate if the value is greater than or equals <code>6</code><br>you can specify any similarity score in the 0-to-10 range", + "type": [ + "integer", + "null" + ] + }, + "tag": { + "description": "<em>user-defined task identifier</em><br>optional field<br><em>the character limit is 255</em><br>you can use this parameter to identify the task and match it with the result<br>you will find the specified <code>tag</code> value in the <code>data</code> object of the response", + "type": [ + "string", + "null" + ] + }, + "url": { + "description": "<em>page URL</em><br><strong>required field</strong><br>specify the initial page you want to receive duplicate content for", + "type": "string" + } + }, + "type": "object" + } +]
- Changed
post_dataforseo_on_page_duplicate_tags2 fields changed- removed
Input schema / properties / body / items / anyOfRemoved value: -[ - { - "example": [ - { - "id": "07281559-0695-0216-0000-c269be8b7592", - "limit": 10, - "type": "duplicate_description" - } - ], - "properties": { - "accumulator": { - "description": "<em>tag value</em><br>optional field<br>specify a title or description here if you want to receive a list of duplicate pages that contains this tag", - "type": [ - "string", - "null" - ] - }, - "id": { - "description": "<em>ID of the task</em><br><strong>required field</strong><br>you can get this ID in the response of the <a href=\"https://docs.dataforseo.com/v3/on_page/task_post/\">Task POST</a> endpoint<br>example:<br>\"07131248-1535-0216-1000-17384017ad04\"", - "type": "string" - }, - "limit": { - "description": "<em>the maximum number of returned pages</em><br>optional field<br>default value: <code>100</code><br>maximum value: <code>1000</code>", - "type": [ - "integer", - "null" - ] - }, - "offset": { - "description": "<em>offset in the results array of returned pages</em><br>optional field<br>default value: <code>0</code><br>maximum value: <code>2000000</code><br>if you specify the <code>10</code> value, the first ten pages in the results array will be omitted and the data will be provided for the successive pages", - "type": [ - "integer", - "null" - ] - }, - "tag": { - "description": "<em>user-defined task identifier</em><br>optional field<br><em>the character limit is 255</em><br>you can use this parameter to identify the task and match it with the result<br>you will find the specified <code>tag</code> value in the <code>data</code> object of the response", - "type": [ - "string", - "null" - ] - }, - "type": { - "description": "type of element", - "type": "string" - } - }, - "type": "object" - } -] - added
Input schema / properties / body / items / oneOfAdded value: +[ + { + "example": [ + { + "id": "07281559-0695-0216-0000-c269be8b7592", + "limit": 10, + "type": "duplicate_description" + } + ], + "properties": { + "accumulator": { + "description": "<em>tag value</em><br>optional field<br>specify a title or description here if you want to receive a list of duplicate pages that contains this tag", + "type": [ + "string", + "null" + ] + }, + "id": { + "description": "<em>ID of the task</em><br><strong>required field</strong><br>you can get this ID in the response of the <a href=\"https://docs.dataforseo.com/v3/on_page/task_post/\">Task POST</a> endpoint<br>example:<br>\"07131248-1535-0216-1000-17384017ad04\"", + "type": "string" + }, + "limit": { + "description": "<em>the maximum number of returned pages</em><br>optional field<br>default value: <code>100</code><br>maximum value: <code>1000</code>", + "type": [ + "integer", + "null" + ] + }, + "offset": { + "description": "<em>offset in the results array of returned pages</em><br>optional field<br>default value: <code>0</code><br>maximum value: <code>2000000</code><br>if you specify the <code>10</code> value, the first ten pages in the results array will be omitted and the data will be provided for the successive pages", + "type": [ + "integer", + "null" + ] + }, + "tag": { + "description": "<em>user-defined task identifier</em><br>optional field<br><em>the character limit is 255</em><br>you can use this parameter to identify the task and match it with the result<br>you will find the specified <code>tag</code> value in the <code>data</code> object of the response", + "type": [ + "string", + "null" + ] + }, + "type": { + "description": "type of element", + "type": "string" + } + }, + "type": "object" + } +]
- Changed
post_dataforseo_on_page_force_stop2 fields changed- removed
Input schema / properties / body / items / anyOfRemoved value: -[ - { - "example": [ - { - "id": "08121600-1535-0216-0000-37b4c7a34453" - }, - { - "id": "08121600-1535-0216-0000-d6a5000b6897" - } - ], - "properties": { - "id": { - "description": "<em>ID of the task</em><br><strong>required field</strong><br>you can get this ID in the response of the <a href=\"/v3/on_page/task_post/\">Task POST</a> endpoint<br>example:<br>\"07131248-1535-0216-1000-17384017ad04\"<p><strong>note</strong>: you can set up to 1000 <code>id</code> values as separate objects in the POST array", - "type": "string" - } - }, - "type": "object" - } -] - added
Input schema / properties / body / items / oneOfAdded value: +[ + { + "example": [ + { + "id": "08121600-1535-0216-0000-37b4c7a34453" + }, + { + "id": "08121600-1535-0216-0000-d6a5000b6897" + } + ], + "properties": { + "id": { + "description": "<em>ID of the task</em><br><strong>required field</strong><br>you can get this ID in the response of the <a href=\"/v3/on_page/task_post/\">Task POST</a> endpoint<br>example:<br>\"07131248-1535-0216-1000-17384017ad04\"<p><strong>note</strong>: you can set up to 1000 <code>id</code> values as separate objects in the POST array", + "type": "string" + } + }, + "type": "object" + } +]
- Changed
post_dataforseo_on_page_keyword_density2 fields changed- removed
Input schema / properties / body / items / anyOfRemoved value: -[ - { - "example": [ - { - "filters": [ - "frequency", - ">", - 5 - ], - "id": "09101923-1535-0216-0000-2389a8854b70", - "keyword_length": 2, - "url": "https://dataforseo.com/" - } - ], - "properties": { - "filters": { - "description": "<em>array of results filtering parameters</em><br>optional field<br><strong>you can add several filters at once (8 filters maximum)</strong><br>you should set a logical operator <code>and</code>, <code>or</code> between the conditions<br>the following operators are supported:<br><code>regex</code>, <code>not_regex</code>, <code>=</code>, <code><></code>, <code>in</code>, <code>not_in</code>, <code>like</code>, <code>not_like</code><br>you can use the <code>%</code> operator with <code>like</code> and <code>not_like</code> to match any string of zero or more characters<br>example:<br><code>[\"keyword\",\"=\",\"%seo%\"]</code><p><code>[[\"keyword\",\"=\",\"%seo%\"],<br>\"and\",<br>[\"frequency\",\"<\",\"6\"]]</code><p><code>[[\"keyword\",\"not_like\",\"%seo%\"],<br>\"and\",<br>[[\"frequency\",\">\",\"6\"],\"or\",[\"density\",\">\",\"0.02\"]]]</code><p>The full list of possible filters is available <a href=\"/v3/on_page/filters_and_thresholds/?bash\" target=\"_blank\" rel=\"noopener noreferrer\">by this link.</a>", - "items": { - "type": [ - "object", - "null" - ] - }, - "type": [ - "array", - "null" - ] - }, - "id": { - "description": "<em>ID of the task</em><br><strong>required field</strong><br>you can get this ID in the response of the <a href=\"/v3/on_page/task_post/\">Task POST</a> endpoint<br>example:<br>\"07131248-1535-0216-1000-17384017ad04\"", - "type": "string" - }, - "keyword_length": { - "description": "<em>number of words for a keyword</em><br><strong>required field</strong><br>possible values:<br><code>1</code>, <code>2</code>, <code>3</code>, <code>4</code>, <code>5</code>", - "type": "integer" - }, - "limit": { - "description": "<em>the maximum number of returned keywords</em><br>optional field<br>default value: <code>100</code><br>maximum value: <code>1000</code>", - "type": [ - "integer", - "null" - ] - }, - "order_by": { - "description": "<em>results sorting rules</em><br>optional field<br>you can use the same values as in the <code>filters</code> array to sort the results<br>possible sorting types:<br><code>asc</code> - results will be sorted in the ascending order<br><code>desc</code> - results will be sorted in the descending order<br>you should use a comma to set up a sorting type<br>example:<br><code>[\"frequency,desc\"]</code><br><strong>note that you can set no more than three sorting rules in a single request</strong><br>you should use a comma to separate several sorting rules<br>example:<br><code>[\"keyword,asc\",\"frequency,desc\"]</code>", - "items": { - "type": "string" - }, - "type": [ - "array", - "null" - ] - }, - "tag": { - "description": "<em>user-defined task identifier</em><br>optional field<br><em>the character limit is 255</em><br>you can use this parameter to identify the task and match it with the result<br>you will find the specified <code>tag</code> value in the <code>data</code> object of the response", - "type": [ - "string", - "null" - ] - }, - "url": { - "description": "<em>page URL</em><br>optional field<br><strong>if you do not specify a page here, the results will be provided for the whole website</strong><br>if you use this field, the API response will contain only keywords from the specified page<br>a page should be specified with absolute URL (including <code>http://</code> or <code>https://</code>)", - "type": [ - "string", - "null" - ] - } - }, - "type": "object" - } -] - added
Input schema / properties / body / items / oneOfAdded value: +[ + { + "example": [ + { + "filters": [ + "frequency", + ">", + 5 + ], + "id": "09101923-1535-0216-0000-2389a8854b70", + "keyword_length": 2, + "url": "https://dataforseo.com/" + } + ], + "properties": { + "filters": { + "description": "<em>array of results filtering parameters</em><br>optional field<br><strong>you can add several filters at once (8 filters maximum)</strong><br>you should set a logical operator <code>and</code>, <code>or</code> between the conditions<br>the following operators are supported:<br><code>regex</code>, <code>not_regex</code>, <code>=</code>, <code><></code>, <code>in</code>, <code>not_in</code>, <code>like</code>, <code>not_like</code><br>you can use the <code>%</code> operator with <code>like</code> and <code>not_like</code> to match any string of zero or more characters<br>example:<br><code>[\"keyword\",\"=\",\"%seo%\"]</code><p><code>[[\"keyword\",\"=\",\"%seo%\"],<br>\"and\",<br>[\"frequency\",\"<\",\"6\"]]</code><p><code>[[\"keyword\",\"not_like\",\"%seo%\"],<br>\"and\",<br>[[\"frequency\",\">\",\"6\"],\"or\",[\"density\",\">\",\"0.02\"]]]</code><p>The full list of possible filters is available <a href=\"/v3/on_page/filters_and_thresholds/?bash\" target=\"_blank\" rel=\"noopener noreferrer\">by this link.</a>", + "items": { + "type": [ + "object", + "null" + ] + }, + "type": [ + "array", + "null" + ] + }, + "id": { + "description": "<em>ID of the task</em><br><strong>required field</strong><br>you can get this ID in the response of the <a href=\"/v3/on_page/task_post/\">Task POST</a> endpoint<br>example:<br>\"07131248-1535-0216-1000-17384017ad04\"", + "type": "string" + }, + "keyword_length": { + "description": "<em>number of words for a keyword</em><br><strong>required field</strong><br>possible values:<br><code>1</code>, <code>2</code>, <code>3</code>, <code>4</code>, <code>5</code>", + "type": "integer" + }, + "limit": { + "description": "<em>the maximum number of returned keywords</em><br>optional field<br>default value: <code>100</code><br>maximum value: <code>1000</code>", + "type": [ + "integer", + "null" + ] + }, + "order_by": { + "description": "<em>results sorting rules</em><br>optional field<br>you can use the same values as in the <code>filters</code> array to sort the results<br>possible sorting types:<br><code>asc</code> - results will be sorted in the ascending order<br><code>desc</code> - results will be sorted in the descending order<br>you should use a comma to set up a sorting type<br>example:<br><code>[\"frequency,desc\"]</code><br><strong>note that you can set no more than three sorting rules in a single request</strong><br>you should use a comma to separate several sorting rules<br>example:<br><code>[\"keyword,asc\",\"frequency,desc\"]</code>", + "items": { + "type": "string" + }, + "type": [ + "array", + "null" + ] + }, + "tag": { + "description": "<em>user-defined task identifier</em><br>optional field<br><em>the character limit is 255</em><br>you can use this parameter to identify the task and match it with the result<br>you will find the specified <code>tag</code> value in the <code>data</code> object of the response", + "type": [ + "string", + "null" + ] + }, + "url": { + "description": "<em>page URL</em><br>optional field<br><strong>if you do not specify a page here, the results will be provided for the whole website</strong><br>if you use this field, the API response will contain only keywords from the specified page<br>a page should be specified with absolute URL (including <code>http://</code> or <code>https://</code>)", + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + } +]
- Changed
post_dataforseo_on_page_lighthouse_live_json2 fields changed- removed
Input schema / properties / body / items / anyOfRemoved value: -[ - { - "example": [ - { - "for_mobile": true, - "tag": "some_string_123", - "url": "https://dataforseo.com" - } - ], - "properties": { - "audits": { - "description": "<em>Lighthouse audits</em><br>optional field<br>audits are individual tests Lighthouse runs for each specific feature/optimization/metric to produce a numeric score (<a href=\"https://github.com/GoogleChrome/lighthouse/blob/master/docs/architecture.md#components--terminology\" rel=\"noopener noreferrer\" target=\"_blank\">see official definition</a>); <p><strong>if you ignore this field, we will return data for all audits</strong>;<br>use this field to get data for specific audits you indicate here;<p><strong>Note:</strong> that some audits do not belong to a specific category and are stand-alone page quality measurements;<p>in general, there can be several use cases:<p>1. if you ignore <code>categories</code>, you can use this field to get data for the specified audits only<br>for example, if you ignore <code>\"categories\"</code> and specify <code>\"audits\": [\"metrics/cumulative-layout-shift\",\"metrics/largest-contentful-paint\",\"metrics/total-blocking-time\"]</code>, you will get data only for these audits<p>2. if you specify a category, you can use this field to additionally receive audits that do not belong to the category(-ies) you specified<br>for example, if you specify <code>\"categories\": [\"seo\"]</code> and <code>\"audits\": [\"metrics/cumulative-layout-shift\",\"metrics/largest-contentful-paint\",\"metrics/total-blocking-time\"]</code>, you will get only these audits under \"performance\" and all audits under \"seo\"<p>you can get <a href=\"/v3/on_page/lighthouse/audits/\">the full list of possible audits here</a>", - "items": { - "type": "string" - }, - "type": [ - "array", - "null" - ] - }, - "browser_cpu_throttling_multiplier": { - "description": "<em>browser CPU throttling multiplier</em><br><strong>required if <code>browser_network_throttling_method</code> is set to <code>devtools</code>;</strong><br>set the CPU throttling multiplier to simulate device performance conditions during the Lighthouse audit;<br>can be specified within the following range: <code>1–4</code>;<br><strong>Note:</strong> this parameter is applied only when <code>browser_network_throttling_method</code> is set to <code>devtools</code>;", - "type": [ - "number", - "null" - ] - }, - "browser_network_throttling": { - "description": "<em>browser network throttling</em><br><strong>required if <code>browser_network_throttling_method</code> is set to <code>devtools</code>;</strong><br>set the network throttling profile to simulate connection speed conditions during the Lighthouse audit;<br>possible values: <code>no_throttling</code>, <code>fast_4g</code>, <code>slow_4g</code>, <code>regular_3g</code>, <code>pc</code>;<br><strong>Note:</strong> this parameter is applied only when <code>browser_network_throttling_method</code> is set to <code>devtools</code>;", - "type": [ - "string", - "null" - ] - }, - "browser_network_throttling_method": { - "description": "<em>browser network throttling method</em><br>optional field<br>defines the method used to apply throttling during the Lighthouse audit;<br>possible vaules:<br><code>simulate</code> - calculates estimated performance metrics without applying explicit throttling;<br><code>devtools</code> - applies the throttling settings specified in <code>browser_network_throttling</code> and <code>browser_cpu_throttling_multiplier</code>;<br><code>provided</code> - uses the network conditions of the crawling environment;", - "type": [ - "string", - "null" - ] - }, - "browser_screen_height": { - "description": "<em>browser screen height</em><br>optional field<br>set the screen height of the browser used for the Lighthouse audit to emulate a specific device;<br>can be specified within the following range: <code>240–9999</code>;", - "type": [ - "integer", - "null" - ] - }, - "browser_screen_scale_factor": { - "description": "<em>browser screen scale factor</em><br>optional field<br>set the device pixel ratio of the browser used for the Lighthouse audit;<br>can be specified within the following range: <code>0.5–3</code>;", - "type": [ - "number", - "null" - ] - }, - "browser_screen_width": { - "description": "<em>browser screen width</em><br>optional field<br>set the screen width of the browser used for the Lighthouse audit to emulate a specific device;<br>can be specified within the following range: <code>240–9999</code>;", - "format": "int64", - "type": [ - "integer", - "null" - ] - }, - "categories": { - "description": "<em>categories of Lighthouse audits</em><br>optional field<br>each category is a collection of audits and audit groups that applies weighting and scoring to the section (<a href=\"https://github.com/GoogleChrome/lighthouse/blob/master/docs/architecture.md#auditreport-terminology\" rel=\"noopener noreferrer\" target=\"_blank\">see official definition</a>)<p><strong>if you ignore this field, we will return data for all categories unless you specify <code>audits</code></strong><br>use this field to get data for specific categories you indicate here<p>possible values:<br><code>seo</code>, <code>performance</code>, <code>best_practices</code>, <code>accessibility</code>", - "items": { - "type": "string" - }, - "type": [ - "array", - "null" - ] - }, - "custom_user_agent": { - "description": "<em>custom user agent</em><br>optional field<br>specify the custom user agent used by the browser when running the Lighthouse audit;<br>can be specified with up to 254 characters;", - "type": [ - "string", - "null" - ] - }, - "for_mobile": { - "description": "<em>applies mobile emulation</em><br>optional field<br>if set to <code>true</code>, Lighthouse will use mobile device and screen emulation to test the page against mobile environment<br>if set to <code>false</code>, the results will be provided for desktop<br>default value: <code>false</code>", - "type": [ - "boolean", - "null" - ] - }, - "language_code": { - "description": "<em>lighthouse language code</em><br>optional field<br>you can receive the list of available languages of the search engine with their <code>language_code</code> by making a separate request to <code>https://api.dataforseo.com/v3/on_page/lighthouse/languages</code><br>default value:<br><code class=\"long-string\">en</code>", - "type": [ - "string", - "null" - ] - }, - "language_name": { - "description": "<em>lighthouse language name</em><br>optional field<br>you can receive the list of available languages of the search engine with their <code>language_name</code> by making a separate request to <code>https://api.dataforseo.com/v3/on_page/lighthouse/languages</code><br>default value:<br><code class=\"long-string\">English</code>", - "type": [ - "string", - "null" - ] - }, - "tag": { - "description": "<em>user-defined task identifier</em><br>optional field<br><em>the character limit is 255</em><br>you can use this parameter to identify the task and match it with the result<br>you will find the specified <code>tag</code> value in the <code>data</code> object of the response", - "type": [ - "string", - "null" - ] - }, - "url": { - "description": "<em>target URL</em><br><strong>required field</strong><br>target page should be specified with its absolute URL (including http:// or https://)<br>example:<br><code>https://dataforseo.com/</code>", - "type": "string" - }, - "version": { - "description": "<em>lighthouse version</em><br>optional field<br>you can obtain the results specific to a certain Lighthouse version by specifying its number<br>the list of available versions is available through the <a href=\"/v3/on_page/lighthouse/versions/\" rel=\"noopener noreferrer\" target=\"_blank\">Lighthouse Versions endpoint</a>", - "type": [ - "string", - "null" - ] - } - }, - "type": "object" - } -] - added
Input schema / properties / body / items / oneOfAdded value: +[ + { + "example": [ + { + "for_mobile": true, + "tag": "some_string_123", + "url": "https://dataforseo.com" + } + ], + "properties": { + "audits": { + "description": "<em>Lighthouse audits</em><br>optional field<br>audits are individual tests Lighthouse runs for each specific feature/optimization/metric to produce a numeric score (<a href=\"https://github.com/GoogleChrome/lighthouse/blob/master/docs/architecture.md#components--terminology\" rel=\"noopener noreferrer\" target=\"_blank\">see official definition</a>); <p><strong>if you ignore this field, we will return data for all audits</strong>;<br>use this field to get data for specific audits you indicate here;<p><strong>Note:</strong> that some audits do not belong to a specific category and are stand-alone page quality measurements;<p>in general, there can be several use cases:<p>1. if you ignore <code>categories</code>, you can use this field to get data for the specified audits only<br>for example, if you ignore <code>\"categories\"</code> and specify <code>\"audits\": [\"metrics/cumulative-layout-shift\",\"metrics/largest-contentful-paint\",\"metrics/total-blocking-time\"]</code>, you will get data only for these audits<p>2. if you specify a category, you can use this field to additionally receive audits that do not belong to the category(-ies) you specified<br>for example, if you specify <code>\"categories\": [\"seo\"]</code> and <code>\"audits\": [\"metrics/cumulative-layout-shift\",\"metrics/largest-contentful-paint\",\"metrics/total-blocking-time\"]</code>, you will get only these audits under \"performance\" and all audits under \"seo\"<p>you can get <a href=\"/v3/on_page/lighthouse/audits/\">the full list of possible audits here</a>", + "items": { + "type": "string" + }, + "type": [ + "array", + "null" + ] + }, + "browser_cpu_throttling_multiplier": { + "description": "<em>browser CPU throttling multiplier</em><br><strong>required if <code>browser_network_throttling_method</code> is set to <code>devtools</code>;</strong><br>set the CPU throttling multiplier to simulate device performance conditions during the Lighthouse audit;<br>can be specified within the following range: <code>1–4</code>;<br><strong>Note:</strong> this parameter is applied only when <code>browser_network_throttling_method</code> is set to <code>devtools</code>;", + "type": [ + "number", + "null" + ] + }, + "browser_network_throttling": { + "description": "<em>browser network throttling</em><br><strong>required if <code>browser_network_throttling_method</code> is set to <code>devtools</code>;</strong><br>set the network throttling profile to simulate connection speed conditions during the Lighthouse audit;<br>possible values: <code>no_throttling</code>, <code>fast_4g</code>, <code>slow_4g</code>, <code>regular_3g</code>, <code>pc</code>;<br><strong>Note:</strong> this parameter is applied only when <code>browser_network_throttling_method</code> is set to <code>devtools</code>;", + "type": [ + "string", + "null" + ] + }, + "browser_network_throttling_method": { + "description": "<em>browser network throttling method</em><br>optional field<br>defines the method used to apply throttling during the Lighthouse audit;<br>possible vaules:<br><code>simulate</code> - calculates estimated performance metrics without applying explicit throttling;<br><code>devtools</code> - applies the throttling settings specified in <code>browser_network_throttling</code> and <code>browser_cpu_throttling_multiplier</code>;<br><code>provided</code> - uses the network conditions of the crawling environment;", + "type": [ + "string", + "null" + ] + }, + "browser_screen_height": { + "description": "<em>browser screen height</em><br>optional field<br>set the screen height of the browser used for the Lighthouse audit to emulate a specific device;<br>can be specified within the following range: <code>240–9999</code>;", + "type": [ + "integer", + "null" + ] + }, + "browser_screen_scale_factor": { + "description": "<em>browser screen scale factor</em><br>optional field<br>set the device pixel ratio of the browser used for the Lighthouse audit;<br>can be specified within the following range: <code>0.5–3</code>;", + "type": [ + "number", + "null" + ] + }, + "browser_screen_width": { + "description": "<em>browser screen width</em><br>optional field<br>set the screen width of the browser used for the Lighthouse audit to emulate a specific device;<br>can be specified within the following range: <code>240–9999</code>;", + "format": "int64", + "type": [ + "integer", + "null" + ] + }, + "categories": { + "description": "<em>categories of Lighthouse audits</em><br>optional field<br>each category is a collection of audits and audit groups that applies weighting and scoring to the section (<a href=\"https://github.com/GoogleChrome/lighthouse/blob/master/docs/architecture.md#auditreport-terminology\" rel=\"noopener noreferrer\" target=\"_blank\">see official definition</a>)<p><strong>if you ignore this field, we will return data for all categories unless you specify <code>audits</code></strong><br>use this field to get data for specific categories you indicate here<p>possible values:<br><code>seo</code>, <code>performance</code>, <code>best_practices</code>, <code>accessibility</code>", + "items": { + "type": "string" + }, + "type": [ + "array", + "null" + ] + }, + "custom_user_agent": { + "description": "<em>custom user agent</em><br>optional field<br>specify the custom user agent used by the browser when running the Lighthouse audit;<br>can be specified with up to 254 characters;", + "type": [ + "string", + "null" + ] + }, + "for_mobile": { + "description": "<em>applies mobile emulation</em><br>optional field<br>if set to <code>true</code>, Lighthouse will use mobile device and screen emulation to test the page against mobile environment<br>if set to <code>false</code>, the results will be provided for desktop<br>default value: <code>false</code>", + "type": [ + "boolean", + "null" + ] + }, + "language_code": { + "description": "<em>lighthouse language code</em><br>optional field<br>you can receive the list of available languages of the search engine with their <code>language_code</code> by making a separate request to <code>https://api.dataforseo.com/v3/on_page/lighthouse/languages</code><br>default value:<br><code class=\"long-string\">en</code>", + "type": [ + "string", + "null" + ] + }, + "language_name": { + "description": "<em>lighthouse language name</em><br>optional field<br>you can receive the list of available languages of the search engine with their <code>language_name</code> by making a separate request to <code>https://api.dataforseo.com/v3/on_page/lighthouse/languages</code><br>default value:<br><code class=\"long-string\">English</code>", + "type": [ + "string", + "null" + ] + }, + "tag": { + "description": "<em>user-defined task identifier</em><br>optional field<br><em>the character limit is 255</em><br>you can use this parameter to identify the task and match it with the result<br>you will find the specified <code>tag</code> value in the <code>data</code> object of the response", + "type": [ + "string", + "null" + ] + }, + "url": { + "description": "<em>target URL</em><br><strong>required field</strong><br>target page should be specified with its absolute URL (including http:// or https://)<br>example:<br><code>https://dataforseo.com/</code>", + "type": "string" + }, + "version": { + "description": "<em>lighthouse version</em><br>optional field<br>you can obtain the results specific to a certain Lighthouse version by specifying its number<br>the list of available versions is available through the <a href=\"/v3/on_page/lighthouse/versions/\" rel=\"noopener noreferrer\" target=\"_blank\">Lighthouse Versions endpoint</a>", + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + } +]
- Changed
post_dataforseo_on_page_links2 fields changed- removed
Input schema / properties / body / items / anyOfRemoved value: -[ - { - "example": [ - { - "filters": [ - [ - "dofollow", - "=", - true - ], - "and", - [ - "direction", - "=", - "external" - ] - ], - "id": "07281559-0695-0216-0000-c269be8b7592", - "limit": 10, - "page_from": "/apis/google-trends-api" - } - ], - "properties": { - "filters": { - "description": "<em>array of results filtering parameters</em><br>optional field<br><strong>you can add several filters at once (8 filters maximum)</strong><br>you should set a logical operator <code>and</code>, <code>or</code> between the conditions<br>the following operators are supported:<br><code>regex</code>, <code>not_regex</code>, <code>=</code>, <code><></code>, <code>in</code>, <code>not_in</code>, <code>like</code>, <code>not_like</code><br>you can use the <code>%</code> operator with <code>like</code> and <code>not_like</code> to match any string of zero or more characters<br>example:<br><code>[\"direction\",\"=\",\"external\"]</code><p><code>[[\"domain_to\",\"<>\",\"example.com\"],<br>\"and\",<br>[\"link_from\",\"not_like\",\"%example.com/blog%\"]]</code><p><code>[[\"direction\",\"=\",\"external\"],<br>\"and\",<br>[[\"link_from\",\"like\",\"%example.com/blog%\"],\"or\",[\"link_from\",\"like\",\"%example.com/help%\"]]]</code><p>The full list of possible filters is available <a href=\"/v3/on_page/filters_and_thresholds/?bash\" rel=\"noopener noreferrer\" target=\"_blank\">by this link.</a>", - "items": { - "type": [ - "object", - "null" - ] - }, - "type": [ - "array", - "null" - ] - }, - "id": { - "description": "<em>ID of the task</em><br><strong>required field</strong><br>you can get this ID in the response of the <a href=\"https://docs.dataforseo.com/v3/on_page/task_post/\">Task POST</a> endpoint<br>example:<br>\"07131248-1535-0216-1000-17384017ad04\"", - "type": "string" - }, - "limit": { - "description": "<em>the maximum number of returned links</em><br>optional field<br>default value: <code>100</code><br>maximum value: <code>1000</code>", - "type": [ - "integer", - "null" - ] - }, - "offset": { - "description": "<em>offset in the results array of returned links</em><br>optional field<br>default value: <code>0</code><br>maximum value: <code>2000000</code><br>if you specify the <code>10</code> value, the first ten links in the results array will be omitted and the data will be provided for the successive links", - "type": [ - "integer", - "null" - ] - }, - "page_from": { - "description": "<em>relative page URL</em><br>optional field<br>if you use this field, the API response will contain only links from the specified page<br>note that in this field you can specify relative URLs only", - "type": [ - "string", - "null" - ] - }, - "page_to": { - "description": "<em>relative page URL</em><br>optional field<br>if you use this field, the API response will contain only internal links pointing to the specified page<br>note that in this field you can specify relative URLs only", - "type": [ - "string", - "null" - ] - }, - "search_after_token": { - "description": "<em>token for subsequent requests</em><br>optional field<br>provided in the identical filed of the response to each request;<br>use this parameter to avoid timeouts while trying to obtain over <code>20,000</code> results in a single request;<br>by specifying the unique <code>search_after_token</code> value from the response array, you will get the subsequent results of the initial task;<br><code>search_after_token</code> values are unique for each subsequent task ;<br><strong>Note:</strong> if the <code>search_after_token</code> is specified in the request, all other parameters should be identical to the previous request", - "type": [ - "string", - "null" - ] - }, - "tag": { - "description": "<em>user-defined task identifier</em><br>optional field<br><em>the character limit is 255</em><br>you can use this parameter to identify the task and match it with the result<br>you will find the specified <code>tag</code> value in the <code>data</code> object of the response", - "type": [ - "string", - "null" - ] - } - }, - "type": "object" - } -] - added
Input schema / properties / body / items / oneOfAdded value: +[ + { + "example": [ + { + "filters": [ + [ + "dofollow", + "=", + true + ], + "and", + [ + "direction", + "=", + "external" + ] + ], + "id": "07281559-0695-0216-0000-c269be8b7592", + "limit": 10, + "page_from": "/apis/google-trends-api" + } + ], + "properties": { + "filters": { + "description": "<em>array of results filtering parameters</em><br>optional field<br><strong>you can add several filters at once (8 filters maximum)</strong><br>you should set a logical operator <code>and</code>, <code>or</code> between the conditions<br>the following operators are supported:<br><code>regex</code>, <code>not_regex</code>, <code>=</code>, <code><></code>, <code>in</code>, <code>not_in</code>, <code>like</code>, <code>not_like</code><br>you can use the <code>%</code> operator with <code>like</code> and <code>not_like</code> to match any string of zero or more characters<br>example:<br><code>[\"direction\",\"=\",\"external\"]</code><p><code>[[\"domain_to\",\"<>\",\"example.com\"],<br>\"and\",<br>[\"link_from\",\"not_like\",\"%example.com/blog%\"]]</code><p><code>[[\"direction\",\"=\",\"external\"],<br>\"and\",<br>[[\"link_from\",\"like\",\"%example.com/blog%\"],\"or\",[\"link_from\",\"like\",\"%example.com/help%\"]]]</code><p>The full list of possible filters is available <a href=\"/v3/on_page/filters_and_thresholds/?bash\" rel=\"noopener noreferrer\" target=\"_blank\">by this link.</a>", + "items": { + "type": [ + "object", + "null" + ] + }, + "type": [ + "array", + "null" + ] + }, + "id": { + "description": "<em>ID of the task</em><br><strong>required field</strong><br>you can get this ID in the response of the <a href=\"https://docs.dataforseo.com/v3/on_page/task_post/\">Task POST</a> endpoint<br>example:<br>\"07131248-1535-0216-1000-17384017ad04\"", + "type": "string" + }, + "limit": { + "description": "<em>the maximum number of returned links</em><br>optional field<br>default value: <code>100</code><br>maximum value: <code>1000</code>", + "type": [ + "integer", + "null" + ] + }, + "offset": { + "description": "<em>offset in the results array of returned links</em><br>optional field<br>default value: <code>0</code><br>maximum value: <code>2000000</code><br>if you specify the <code>10</code> value, the first ten links in the results array will be omitted and the data will be provided for the successive links", + "type": [ + "integer", + "null" + ] + }, + "page_from": { + "description": "<em>relative page URL</em><br>optional field<br>if you use this field, the API response will contain only links from the specified page<br>note that in this field you can specify relative URLs only", + "type": [ + "string", + "null" + ] + }, + "page_to": { + "description": "<em>relative page URL</em><br>optional field<br>if you use this field, the API response will contain only internal links pointing to the specified page<br>note that in this field you can specify relative URLs only", + "type": [ + "string", + "null" + ] + }, + "search_after_token": { + "description": "<em>token for subsequent requests</em><br>optional field<br>provided in the identical filed of the response to each request;<br>use this parameter to avoid timeouts while trying to obtain over <code>20,000</code> results in a single request;<br>by specifying the unique <code>search_after_token</code> value from the response array, you will get the subsequent results of the initial task;<br><code>search_after_token</code> values are unique for each subsequent task ;<br><strong>Note:</strong> if the <code>search_after_token</code> is specified in the request, all other parameters should be identical to the previous request", + "type": [ + "string", + "null" + ] + }, + "tag": { + "description": "<em>user-defined task identifier</em><br>optional field<br><em>the character limit is 255</em><br>you can use this parameter to identify the task and match it with the result<br>you will find the specified <code>tag</code> value in the <code>data</code> object of the response", + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + } +]
- Changed
post_dataforseo_on_page_microdata2 fields changed- removed
Input schema / properties / body / items / anyOfRemoved value: -[ - { - "example": [ - { - "id": "02241700-1535-0216-0000-034137259bc1", - "url": "https://dataforseo.com/apis" - } - ], - "properties": { - "id": { - "description": "<em>ID of the task</em><br><strong>required field</strong><br>you can get this ID in the response of the <a href=\"/v3/on_page/task_post/\">Task POST</a> endpoint<br>example:<br><code>\"07131248-1535-0216-1000-17384017ad04\"</code>", - "type": "string" - }, - "tag": { - "description": "<em>user-defined task identifier</em><br>optional field<br><em>the character limit is 255</em><br>you can use this parameter to identify the task and match it with the result<br>you will find the specified <code>tag</code> value in the <code>data</code> object of the response", - "type": [ - "string", - "null" - ] - }, - "url": { - "description": "<em>resource URL</em><br><strong>required field</strong><br>you can get this URL in the response of the <a href=\"/v3/on_page/pages/\">Pages</a> endpoint<br>example:<br><code>https://dataforseo.com/apis</code>", - "type": "string" - } - }, - "type": "object" - } -] - added
Input schema / properties / body / items / oneOfAdded value: +[ + { + "example": [ + { + "id": "02241700-1535-0216-0000-034137259bc1", + "url": "https://dataforseo.com/apis" + } + ], + "properties": { + "id": { + "description": "<em>ID of the task</em><br><strong>required field</strong><br>you can get this ID in the response of the <a href=\"/v3/on_page/task_post/\">Task POST</a> endpoint<br>example:<br><code>\"07131248-1535-0216-1000-17384017ad04\"</code>", + "type": "string" + }, + "tag": { + "description": "<em>user-defined task identifier</em><br>optional field<br><em>the character limit is 255</em><br>you can use this parameter to identify the task and match it with the result<br>you will find the specified <code>tag</code> value in the <code>data</code> object of the response", + "type": [ + "string", + "null" + ] + }, + "url": { + "description": "<em>resource URL</em><br><strong>required field</strong><br>you can get this URL in the response of the <a href=\"/v3/on_page/pages/\">Pages</a> endpoint<br>example:<br><code>https://dataforseo.com/apis</code>", + "type": "string" + } + }, + "type": "object" + } +]
- Changed
post_dataforseo_on_page_non_indexable2 fields changed- removed
Input schema / properties / body / items / anyOfRemoved value: -[ - { - "example": [ - { - "filters": [ - [ - "reason", - "=", - "robots_txt" - ], - "and", - [ - "url", - "like", - "%go%" - ] - ], - "id": "07281559-0695-0216-0000-c269be8b7592", - "limit": 10 - } - ], - "properties": { - "filters": { - "description": "<em>array of results filtering parameters</em><br>optional field<br><strong>you can add several filters at once (8 filters maximum)</strong><br>you should set a logical operator <code>and</code>, <code>or</code> between the conditions<br>the following operators are supported:<br><code>regex</code>, <code>not_regex</code>, <code><</code>, <code><=</code>, <code>></code>, <code>>=</code>, <code>=</code>, <code><></code>, <code>in</code>, <code>not_in</code>, <code>like</code>, <code>not_like</code><br>you can use the <code>%</code> operator with <code>like</code> and <code>not_like</code> to match any string of zero or more characters<br>example:<br><code>[[\"reason\",\"<>\",\"robots_txt\"],<br>\"and\",<br>[\"url\",\"not_like\",\"%/wp-admin/%\"]]</code><p><code>[[\"url\",\"not_like\",\"%/wp-admin/%\"],<br>\"and\",<br>[[\"reason\",\"<>\",\"meta_tag\"],\"or\",[\"reason\",\"<>\",\"http_header\"]]]</code><p>The full list of possible filters is available <a href=\"/v3/on_page/filters_and_thresholds/?bash\" target=\"_blank\" rel=\"noopener noreferrer\">by this link.</a>", - "items": { - "type": [ - "object", - "null" - ] - }, - "type": [ - "array", - "null" - ] - }, - "id": { - "description": "<em>ID of the task</em><br><strong>required field</strong><br>you can get this ID in the response of the <a href=\"/v3/on_page/task_post/\">Task POST</a> endpoint<br>example:<br>\"07131248-1535-0216-1000-17384017ad04\"", - "type": "string" - }, - "limit": { - "description": "<em>the maximum number of returned pages</em><br>optional field<br>default value: <code>100</code><br>maximum value: <code>1000</code>", - "type": [ - "integer", - "null" - ] - }, - "offset": { - "description": "<em>offset in the results array of returned pages</em><br>optional field<br>default value: <code>0</code><br>maximum value: <code>2000000</code><br>if you specify the <code>10</code> value, the first ten pages in the results array will be omitted and the data will be provided for the successive pages", - "type": [ - "integer", - "null" - ] - } - }, - "type": "object" - } -] - added
Input schema / properties / body / items / oneOfAdded value: +[ + { + "example": [ + { + "filters": [ + [ + "reason", + "=", + "robots_txt" + ], + "and", + [ + "url", + "like", + "%go%" + ] + ], + "id": "07281559-0695-0216-0000-c269be8b7592", + "limit": 10 + } + ], + "properties": { + "filters": { + "description": "<em>array of results filtering parameters</em><br>optional field<br><strong>you can add several filters at once (8 filters maximum)</strong><br>you should set a logical operator <code>and</code>, <code>or</code> between the conditions<br>the following operators are supported:<br><code>regex</code>, <code>not_regex</code>, <code><</code>, <code><=</code>, <code>></code>, <code>>=</code>, <code>=</code>, <code><></code>, <code>in</code>, <code>not_in</code>, <code>like</code>, <code>not_like</code><br>you can use the <code>%</code> operator with <code>like</code> and <code>not_like</code> to match any string of zero or more characters<br>example:<br><code>[[\"reason\",\"<>\",\"robots_txt\"],<br>\"and\",<br>[\"url\",\"not_like\",\"%/wp-admin/%\"]]</code><p><code>[[\"url\",\"not_like\",\"%/wp-admin/%\"],<br>\"and\",<br>[[\"reason\",\"<>\",\"meta_tag\"],\"or\",[\"reason\",\"<>\",\"http_header\"]]]</code><p>The full list of possible filters is available <a href=\"/v3/on_page/filters_and_thresholds/?bash\" target=\"_blank\" rel=\"noopener noreferrer\">by this link.</a>", + "items": { + "type": [ + "object", + "null" + ] + }, + "type": [ + "array", + "null" + ] + }, + "id": { + "description": "<em>ID of the task</em><br><strong>required field</strong><br>you can get this ID in the response of the <a href=\"/v3/on_page/task_post/\">Task POST</a> endpoint<br>example:<br>\"07131248-1535-0216-1000-17384017ad04\"", + "type": "string" + }, + "limit": { + "description": "<em>the maximum number of returned pages</em><br>optional field<br>default value: <code>100</code><br>maximum value: <code>1000</code>", + "type": [ + "integer", + "null" + ] + }, + "offset": { + "description": "<em>offset in the results array of returned pages</em><br>optional field<br>default value: <code>0</code><br>maximum value: <code>2000000</code><br>if you specify the <code>10</code> value, the first ten pages in the results array will be omitted and the data will be provided for the successive pages", + "type": [ + "integer", + "null" + ] + } + }, + "type": "object" + } +]
- Changed
post_dataforseo_on_page_raw_html2 fields changed- removed
Input schema / properties / body / items / anyOfRemoved value: -[ - { - "example": [ - { - "id": "07281559-0695-0216-0000-c269be8b7592", - "url": "https://dataforseo.com/apis" - } - ], - "properties": { - "id": { - "description": "<em>ID of the task</em><br><strong>required field</strong><br>you can get this ID in the response of the <a href=\"/v3/on_page/task_post/\">Task POST</a> endpoint<br>example:<br>\"07131248-1535-0216-1000-17384017ad04\"", - "type": "string" - }, - "url": { - "description": "<em>page url</em><br><strong>required field</strong><br>the absolute URL of a page to request HTML<br><strong>Note:</strong> this field is optional if the task was set using the <a href=\"/v3/on_page/instant_pages/\">Instant Pages endpoint</a>", - "type": "string" - } - }, - "type": "object" - } -] - added
Input schema / properties / body / items / oneOfAdded value: +[ + { + "example": [ + { + "id": "07281559-0695-0216-0000-c269be8b7592", + "url": "https://dataforseo.com/apis" + } + ], + "properties": { + "id": { + "description": "<em>ID of the task</em><br><strong>required field</strong><br>you can get this ID in the response of the <a href=\"/v3/on_page/task_post/\">Task POST</a> endpoint<br>example:<br>\"07131248-1535-0216-1000-17384017ad04\"", + "type": "string" + }, + "url": { + "description": "<em>page url</em><br><strong>required field</strong><br>the absolute URL of a page to request HTML<br><strong>Note:</strong> this field is optional if the task was set using the <a href=\"/v3/on_page/instant_pages/\">Instant Pages endpoint</a>", + "type": "string" + } + }, + "type": "object" + } +]
- Changed
post_dataforseo_on_page_resources2 fields changed- removed
Input schema / properties / body / items / anyOfRemoved value: -[ - { - "example": [ - { - "filters": [ - [ - "resource_type", - "=", - "image" - ], - "and", - [ - "size", - ">", - 100000 - ] - ], - "id": "07281559-0695-0216-0000-c269be8b7592", - "limit": 10, - "order_by": [ - "size,desc" - ] - } - ], - "properties": { - "filters": { - "description": "<em>array of results filtering parameters</em><br>optional field<br><strong>you can add several filters at once (8 filters maximum)</strong><br>you should set a logical operator <code>and</code>, <code>or</code> between the conditions<br>the following operators are supported:<br><code>regex</code>, <code>not_regex</code>, <code><</code>, <code><=</code>, <code>></code>, <code>>=</code>, <code>=</code>, <code><></code>, <code>in</code>, <code>not_in</code>, <code>like</code>, <code>not_like</code><br>you can use the <code>%</code> operator with <code>like</code> and <code>not_like</code> to match any string of zero or more characters<br>example:<br><code>[\"resource_type\",\"=\",\"stylesheet\"]</code><p><code>[[\"resource_type\",\"=\",\"image\"],<br>\"and\",[\"checks.is_https\",\"=\",false]]</code><p><code>[[\"fetch_timing.duration_time\",\">\",1],\"and\",[[\"total_transfer_size\",\">\",100],\"or\",[\"checks.high_loading_time\",\"=\",true]]]</code><p>The full list of possible filters is available <a href=\"/v3/on_page/filters_and_thresholds/?bash\" rel=\"noopener noreferrer\" target=\"_blank\">by this link.</a>", - "items": { - "type": [ - "object", - "null" - ] - }, - "type": [ - "array", - "null" - ] - }, - "id": { - "description": "<em>ID of the task</em><br><strong>required field</strong><br>you can get this ID in the response of the <a href=\"/v3/on_page/task_post/\">Task POST</a> endpoint<br>example:<br>\"07131248-1535-0216-1000-17384017ad04\"", - "type": "string" - }, - "limit": { - "description": "<em>the maximum number of returned resources</em><br>optional field<br>default value: <code>100</code><br>maximum value: <code>1000</code>", - "type": [ - "integer", - "null" - ] - }, - "offset": { - "description": "<em>offset in the results array of returned resources</em><br>optional field<br>default value: <code>0</code><br>maximum value: <code>2000000</code><br>if you specify the <code>10</code> value, the first ten resources in the results array will be omitted and the data will be provided for the successive resources", - "type": [ - "integer", - "null" - ] - }, - "order_by": { - "description": "<em>results sorting rules</em><br>optional field<br>you can use the same values as in the <code>filters</code> array to sort the results<br>possible sorting types:<br><code>asc</code> - results will be sorted in the ascending order<br><code>desc</code> - results will be sorted in the descending order<br>you should use a comma to set up a sorting type<br>example:<br><code>[\"size,desc\"]</code><br><strong>note that you can set no more than three sorting rules in a single request</strong><br>you should use a comma to separate several sorting rules<br>example:<br><code>[\"size,desc\",\"fetch_timing.fetch_end,desc\"]</code>", - "items": { - "type": "string" - }, - "type": [ - "array", - "null" - ] - }, - "relevant_pages_filters": { - "description": "<em>filter the resources by relevant pages</em><br>optional field<br>you can use this field to obtain resources from pages matching to the defined parameters<br>you can apply the same filters here as available for the <a href=\"/v3/on_page/pages/\" rel=\"noopener noreferrer\" target=\"_blank\">pages endpoint</a><br><strong>you can add several filters at once (8 filters maximum)</strong><br>you should set a logical operator <code>and</code>, <code>or</code> between the conditions<br>the following operators are supported:<br><code>regex</code>, <code>not_regex</code>, <code><</code>, <code><=</code>, <code>></code>, <code>>=</code>, <code>=</code>, <code><></code>, <code>in</code>, <code>not_in</code>, <code>like</code>, <code>not_like</code><br>you can use the <code>%</code> operator with <code>like</code> and <code>not_like</code> to match any string of zero or more characters<br>example:<br><code>[\"checks.no_image_title\",\"=\",true]</code>", - "items": { - "type": "string" - }, - "type": [ - "array", - "null" - ] - }, - "search_after_token": { - "description": "<em>token for subsequent requests</em><br>optional field<br>provided in the identical filed of the response to each request;<br>use this parameter to avoid timeouts while trying to obtain over <code>20,000</code> results in a single request;<br>by specifying the unique <code>search_after_token</code> value from the response array, you will get the subsequent results of the initial task;<br><code>search_after_token</code> values are unique for each subsequent task ;<br><strong>Note:</strong> if the <code>search_after_token</code> is specified in the request, all other parameters should be identical to the previous request", - "type": [ - "string", - "null" - ] - }, - "tag": { - "description": "<em>user-defined task identifier</em><br>optional field<br><em>the character limit is 255</em><br>you can use this parameter to identify the task and match it with the result<br>you will find the specified <code>tag</code> value in the <code>data</code> object of the response", - "type": [ - "string", - "null" - ] - }, - "url": { - "description": "<em>page URL</em><br>optional field<br>specify this field if you want to get the resources for a specific page<br>note that to obtain resource's <code>meta</code> from a particular URL, you should specify the URL in this field;<br>if you do not indicate a <code>url</code> when setting a task, resource's <code>meta</code> in the results will be returned based on the data from the page where our crawler first saw the resource", - "type": [ - "string", - "null" - ] - } - }, - "type": "object" - } -] - added
Input schema / properties / body / items / oneOfAdded value: +[ + { + "example": [ + { + "filters": [ + [ + "resource_type", + "=", + "image" + ], + "and", + [ + "size", + ">", + 100000 + ] + ], + "id": "07281559-0695-0216-0000-c269be8b7592", + "limit": 10, + "order_by": [ + "size,desc" + ] + } + ], + "properties": { + "filters": { + "description": "<em>array of results filtering parameters</em><br>optional field<br><strong>you can add several filters at once (8 filters maximum)</strong><br>you should set a logical operator <code>and</code>, <code>or</code> between the conditions<br>the following operators are supported:<br><code>regex</code>, <code>not_regex</code>, <code><</code>, <code><=</code>, <code>></code>, <code>>=</code>, <code>=</code>, <code><></code>, <code>in</code>, <code>not_in</code>, <code>like</code>, <code>not_like</code><br>you can use the <code>%</code> operator with <code>like</code> and <code>not_like</code> to match any string of zero or more characters<br>example:<br><code>[\"resource_type\",\"=\",\"stylesheet\"]</code><p><code>[[\"resource_type\",\"=\",\"image\"],<br>\"and\",[\"checks.is_https\",\"=\",false]]</code><p><code>[[\"fetch_timing.duration_time\",\">\",1],\"and\",[[\"total_transfer_size\",\">\",100],\"or\",[\"checks.high_loading_time\",\"=\",true]]]</code><p>The full list of possible filters is available <a href=\"/v3/on_page/filters_and_thresholds/?bash\" rel=\"noopener noreferrer\" target=\"_blank\">by this link.</a>", + "items": { + "type": [ + "object", + "null" + ] + }, + "type": [ + "array", + "null" + ] + }, + "id": { + "description": "<em>ID of the task</em><br><strong>required field</strong><br>you can get this ID in the response of the <a href=\"/v3/on_page/task_post/\">Task POST</a> endpoint<br>example:<br>\"07131248-1535-0216-1000-17384017ad04\"", + "type": "string" + }, + "limit": { + "description": "<em>the maximum number of returned resources</em><br>optional field<br>default value: <code>100</code><br>maximum value: <code>1000</code>", + "type": [ + "integer", + "null" + ] + }, + "offset": { + "description": "<em>offset in the results array of returned resources</em><br>optional field<br>default value: <code>0</code><br>maximum value: <code>2000000</code><br>if you specify the <code>10</code> value, the first ten resources in the results array will be omitted and the data will be provided for the successive resources", + "type": [ + "integer", + "null" + ] + }, + "order_by": { + "description": "<em>results sorting rules</em><br>optional field<br>you can use the same values as in the <code>filters</code> array to sort the results<br>possible sorting types:<br><code>asc</code> - results will be sorted in the ascending order<br><code>desc</code> - results will be sorted in the descending order<br>you should use a comma to set up a sorting type<br>example:<br><code>[\"size,desc\"]</code><br><strong>note that you can set no more than three sorting rules in a single request</strong><br>you should use a comma to separate several sorting rules<br>example:<br><code>[\"size,desc\",\"fetch_timing.fetch_end,desc\"]</code>", + "items": { + "type": "string" + }, + "type": [ + "array", + "null" + ] + }, + "relevant_pages_filters": { + "description": "<em>filter the resources by relevant pages</em><br>optional field<br>you can use this field to obtain resources from pages matching to the defined parameters<br>you can apply the same filters here as available for the <a href=\"/v3/on_page/pages/\" rel=\"noopener noreferrer\" target=\"_blank\">pages endpoint</a><br><strong>you can add several filters at once (8 filters maximum)</strong><br>you should set a logical operator <code>and</code>, <code>or</code> between the conditions<br>the following operators are supported:<br><code>regex</code>, <code>not_regex</code>, <code><</code>, <code><=</code>, <code>></code>, <code>>=</code>, <code>=</code>, <code><></code>, <code>in</code>, <code>not_in</code>, <code>like</code>, <code>not_like</code><br>you can use the <code>%</code> operator with <code>like</code> and <code>not_like</code> to match any string of zero or more characters<br>example:<br><code>[\"checks.no_image_title\",\"=\",true]</code>", + "items": { + "type": "string" + }, + "type": [ + "array", + "null" + ] + }, + "search_after_token": { + "description": "<em>token for subsequent requests</em><br>optional field<br>provided in the identical filed of the response to each request;<br>use this parameter to avoid timeouts while trying to obtain over <code>20,000</code> results in a single request;<br>by specifying the unique <code>search_after_token</code> value from the response array, you will get the subsequent results of the initial task;<br><code>search_after_token</code> values are unique for each subsequent task ;<br><strong>Note:</strong> if the <code>search_after_token</code> is specified in the request, all other parameters should be identical to the previous request", + "type": [ + "string", + "null" + ] + }, + "tag": { + "description": "<em>user-defined task identifier</em><br>optional field<br><em>the character limit is 255</em><br>you can use this parameter to identify the task and match it with the result<br>you will find the specified <code>tag</code> value in the <code>data</code> object of the response", + "type": [ + "string", + "null" + ] + }, + "url": { + "description": "<em>page URL</em><br>optional field<br>specify this field if you want to get the resources for a specific page<br>note that to obtain resource's <code>meta</code> from a particular URL, you should specify the URL in this field;<br>if you do not indicate a <code>url</code> when setting a task, resource's <code>meta</code> in the results will be returned based on the data from the page where our crawler first saw the resource", + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + } +]
- Changed
post_dataforseo_on_page_submit2 fields changed- removed
Input schema / properties / body / items / anyOfRemoved value: -[ - { - "example": [ - { - "custom_js": "meta = {}; meta.url = document.URL; meta;", - "enable_javascript": true, - "load_resources": true, - "max_crawl_pages": 10, - "pingback_url": "https://your-server.com/pingscript?id=$id&tag=$tag", - "tag": "some_string_123", - "target": "dataforseo.com" - } - ], - "properties": { - "accept_language": { - "description": "<em>language header for accessing the website</em><br>optional field<br>all locale formats are supported (xx, xx-XX, xxx-XX, etc.)<br><strong>Note:</strong> if you do not specify this parameter, some websites may deny access; in this case, pages will be returned with the <code>\"type\":\"broken</code> in the response array", - "type": [ - "string", - "null" - ] - }, - "allow_subdomains": { - "description": "<em>include pages on subdomains</em><br>optional field<br>set to <code>true</code> if you want to crawl all subdomains of a target website<br>default value: <code>false</code>", - "type": [ - "boolean", - "null" - ] - }, - "allowed_subdomains": { - "description": "<em>subdomains to crawl</em><br>optional field<br>specify subdomains that you want to crawl<br>example: <code>[\"blog.site.com\", \"my.site.com\", \"shop.site.com\"]</code><br><strong>Note:</strong> to use this parameter, the <code>allow_subdomains</code> parameter should be set to <code>false</code>;<br>otherwise, the content of <code>allowed_subdomains</code> field will be ignored and the results will be returned for all subdomains", - "items": { - "type": "string" - }, - "type": [ - "array", - "null" - ] - }, - "browser_preset": { - "description": "<em>preset for browser screen parameters</em><br>optional field<br>if you use this field, you don't need to indicate <code>browser_screen_width</code>, <code>browser_screen_height</code>, <code>browser_screen_scale_factor</code>possible values:<br><code>desktop</code>, <code>mobile</code>, <code>tablet</code><code>desktop</code> preset will apply the following values:<code>browser_screen_width: 1920</code><br><code>browser_screen_height: 1080</code><br><code>browser_screen_scale_factor: 1</code><code>mobile</code> preset will apply the following values:<code>browser_screen_width: 390</code><br><code>browser_screen_height: 844</code><br><code>browser_screen_scale_factor: 3</code><code>tablet</code> preset will apply the following values:<code>browser_screen_width: 1024</code><br><code>browser_screen_height: 1366</code><br><code>browser_screen_scale_factor: 2</code><br><strong>Note:</strong> to use this parameter, set <code>enable_javascript</code> or <code>enable_browser_rendering</code> to <code>true</code>", - "type": [ - "string", - "null" - ] - }, - "browser_screen_height": { - "description": "<em>browser screen height</em><br>optional field<br>you can set a custom browser screen height to perform an audit for a particular device;<br>if you use this field, you don't need to indicate <code>browser_preset</code> as it will be ignored;<br><strong>Note:</strong> to use this parameter, set <code>enable_javascript</code> or <code>enable_browser_rendering</code> to <code>true</code>minimum value, in pixels: <code>240</code><br>maximum value, in pixels: <code>9999</code>", - "type": [ - "integer", - "null" - ] - }, - "browser_screen_scale_factor": { - "description": "<em>browser screen scale factor</em><br>optional field<br>you can set a custom browser screen resolution ratio to perform audit for a particular device;<br>if you use this field, you don't need to indicate <code>browser_preset</code> as it will be ignored;<br><strong>Note:</strong> to use this parameter, set <code>enable_javascript</code> or <code>enable_browser_rendering</code> to <code>true</code>minimum value: <code>0.5</code><br>maximum value: <code>3</code>", - "type": [ - "number", - "null" - ] - }, - "browser_screen_width": { - "description": "<em>browser screen width</em><br>optional field<br>you can set a custom browser screen width to perform audit for a particular device;<br>if you use this field, you don't need to indicate <code>browser_preset</code> as it will be ignored;<br><strong>Note:</strong> to use this parameter, set <code>enable_javascript</code> or <code>enable_browser_rendering</code> to <code>true</code>minimum value, in pixels: <code>240</code><br>maximum value, in pixels: <code>9999</code>", - "format": "int64", - "type": [ - "integer", - "null" - ] - }, - "calculate_keyword_density": { - "description": "<em>calculate keyword density for the target domain</em><br>optional field<br>set to <code>true</code> if you want to calculate keyword density for website pages<br>default value: <code>false</code><br><strong>Note:</strong> if you use this parameter, additional charges will apply; learn more about the cost of tasks with this parameter <a href=\"https://dataforseo.com/help-center/cost-of-onpage-api-parameters\" target=\"_blank\" rel=\"noopener noreferrer\">in our help article</a><br>once the crawl is completed, you can obtain keyword density values with <a href=\"/v3/on_page/keyword_density?bash\" target=\"_blank\" rel=\"noopener noreferrer\">the Keyword Density endpoint</a>", - "type": [ - "boolean", - "null" - ] - }, - "check_spell": { - "description": "<em>check spelling</em><br>optional field<br>set to <code>true</code> to check spelling on a website using <a href=\"http://hunspell.github.io/\" target=\"_blank\" rel=\"noopener noreferrer\">Hunspell</a> library<br>default value: <code>false</code>", - "type": [ - "boolean", - "null" - ] - }, - "check_spell_exceptions": { - "description": "<em>words excluded from spell check</em><br>optional field<br>specify the words that you want to exclude from spell check<br>maximum word length: 100 characters<br>maximum amount of words: 1000<br>example: <code>\"SERP\", \"minifiers\", \"JavaScript\"</code>", - "items": { - "type": "string" - }, - "type": [ - "array", - "null" - ] - }, - "check_spell_language": { - "description": "<em>language of the spell check</em><br>optional field<br>supported languages: 'hy', 'eu', 'bg', 'ca', 'hr', 'cs', 'da', 'nl', 'en', 'eo', 'et', 'fo', 'fa', 'fr', 'fy', 'gl', 'ka', 'de', 'el', 'he', 'hu', 'is', 'ia', 'ga', 'it', 'rw', 'la', 'lv', 'lt', 'mk', 'mn', 'ne', 'nb', 'nn', 'pl', 'pt', 'ro', 'gd', 'sr', 'sk', 'sl', 'es', 'sv', 'tr', 'tk', 'uk', 'vi'<br><strong>Note:</strong> if no language is specified, it will be set automatically based on page content", - "type": [ - "string", - "null" - ] - }, - "checks_threshold": { - "additionalProperties": { - "format": "int64", - "type": [ - "integer", - "null" - ] - }, - "description": "<em>custom threshold values for checks</em><br>optional field<br>you can specify custom threshold values for the parameters included in the <code>checks</code> object of OnPage API responses;<br><strong>Note:</strong> only integer threshold values can be modified;<br>for example, the <code>high_loading_time</code> and <code>large_page_size</code> parameters are set to 3 seconds and 1 megabyte respectively by default;<br>if you want to change these thresholds to 1 second and 1000 kbytes, use the following snippet:<br>`\"checks_threshold\": {<br>\"high_loading_time\": 1,<br>\"large_page_size\": 1000<br>}`<br>available customizable parameters with default values:<br>`\"title_too_short\", default value: 30, type: \"int\"<br>\"title_too_long\", default value: 65, type: \"int\"<br>\"small_page_size\", default value: 1024, type: \"int\"<br>\"large_page_size\", default value: 1048576 (1024 * 1024), type: \"int\"<br>\"low_character_count\", default value: 1024, type: \"int\"<br>\"high_character_count\", default value: 256000 (250 * 1024), type: \"int\"<br>\"low_content_rate\", default value: 0.1, type: \"float\"<br>\"high_content_rate\", default value: 0.9, type: \"float\"<br>\"high_loading_time\", default value: 3000, type: \"int\"<br>\"high_waiting_time\", default value: 1500, type: \"int\"<br>\"low_readability_rate\", default value: 15.0, type: \"float\"<br>\"irrelevant_description\", default value: 0.2, type: \"float\"<br>\"irrelevant_title\", default value: 0.3, type: \"float\"<br>\"irrelevant_meta_keywords\", default value: 0.6, type: \"float\"`", - "type": [ - "object", - "null" - ] - }, - "crawl_delay": { - "description": "<em>delay between hits, ms</em><br>optional field<br>the custom delay between crawler hits to the server<br>default value: <code>2000</code>", - "type": [ - "integer", - "null" - ] - }, - "crawl_sitemap_only": { - "description": "<em>crawl only pages indicated in the sitemap</em><br>optional field<br>set to <code>true</code> if you want to crawl only the pages indicated in the sitemap<br>if you set this parameter to <code>true</code> and do not specify <code>custom_sitemap</code>, we will crawl the default sitemap<br>default value: <code>false</code><br><strong>Note:</strong> if you want to use this parameter, <code>respect_sitemap</code> should be <code>true</code>", - "type": [ - "boolean", - "null" - ] - }, - "custom_js": { - "description": "<em>custom javascript</em><br>optional field<br><strong>Note</strong> that the execution time for the script you enter here should be 700 ms maximum, for example, you can use the following JS snippet to check if the website contains Google Tag Manager as a <code>scr</code> attribute:<br><code>let meta = { haveGoogleAnalytics: false, haveTagManager: false };rnfor (var i = 0; i < document.scripts.length; i++) {rn let src = document.scripts[i].getAttribute(\"src\");rn if (src != undefined) {rn if (src.indexOf(\"analytics.js\") >= 0)rn meta.haveGoogleAnalytics = true;rntif (src.indexOf(\"gtm.js\") >= 0)rn meta.haveTagManager = true;rn }rn}rnmeta;</code>the returned value depends on what you specified in this field. For instance, if you specify the following script:<br>`meta = {}; meta.url = document.URL; meta.test = 'test'; meta;`<br>as a response you will receive the following data:<br>`\"custom_js_response\": {<br>\"url\": \"https://dataforseo.com/\",<br>\"test\": \"test\"<br>}`<br><strong>Note:</strong> the length of the script you enter must be no more than 2000 characters", - "type": [ - "string", - "null" - ] - }, - "custom_robots_txt": { - "description": "<em>custom robots.txt settings</em><br>optional field<br>example: <code>Disallow: /directory1/</code>", - "type": [ - "string", - "null" - ] - }, - "custom_sitemap": { - "description": "<em>custom sitemap url</em><br>optional field<br>the URL of the page where the alternative sitemap is located<br><strong>Note:</strong> if you want to use this parameter, <code>respect_sitemap</code> should be <code>true</code>", - "type": [ - "string", - "null" - ] - }, - "custom_user_agent": { - "description": "<em>custom user agent</em><br>optional field<br>custom user agent for crawling a website<br>example: <code>Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36<br></code><br>default value: <code>Mozilla/5.0 (compatible; RSiteAuditor)</code>", - "type": [ - "string", - "null" - ] - }, - "disable_cookie_popup": { - "description": "<em>disable the cookie popup</em><br>optional field<br>set to <code>true</code> if you want to disable the popup requesting cookie consent from the user;<br>default value:<br><code>false</code>", - "type": [ - "boolean", - "null" - ] - }, - "disable_page_checks": { - "description": "<em>prevent certain page checks from running</em><br>optional field<br>specify certain <code>checks</code> to prevent them from running and impacting the <code>onpage_score</code>example:<br><code>\"disable_page_checks\": [\"is_5xx_code\", \"is_4xx_code\"]</code>", - "items": { - "type": "string" - }, - "type": [ - "array", - "null" - ] - }, - "disable_sitewide_checks": { - "description": "<em>prevent certain sitewide checks from running</em><br>optional field<br>specify the following <code>checks</code> to prevent them from running on the <code>target</code> website:<br><code>\"test_page_not_found\"</code><br><code>\"test_canonicalization\"</code><br><code>\"test_https_redirect\"</code><br><code>\"test_directory_browsing\"</code>example:<br><code>\"disable_sitewide_checks\": [\"test_directory_browsing\", \"test_page_not_found\"]</code>learn more on <a href=\"https://dataforseo.com/help-center/how-to-disable-sitewide-checks-in-onpage-api\" target=\"_blank\" rel=\"noopener noreferrer\">our help center</a>", - "items": { - "type": "string" - }, - "type": [ - "array", - "null" - ] - }, - "disallowed_subdomains": { - "description": "<em>subdomains not to crawl</em><br>optional field<br>specify subdomains that you don't want to crawl<br>example: <code>[\"status.site.com\", \"docs.site.com\"]</code><br><strong>Note:</strong> to use this parameter, the <code>allow_subdomains</code> parameter should be set to <code>true</code>", - "items": { - "type": "string" - }, - "type": [ - "array", - "null" - ] - }, - "enable_browser_rendering": { - "description": "<em>emulate browser rendering to measure Core Web Vitals</em><br>optional field<br>by using this parameter you will be able to emulate a browser when loading a web page;<br><code>enable_browser_rendering</code> loads styles, images, fonts, animations, videos, and other resources on a page;<br>default value: <code>false</code><br>set to <code>true</code> to obtain Core Web Vitals (FID, CLS, LCP) metrics in the response;<br><strong>if you use this field, <code>enable_javascript</code>, and <code>load_resources</code> parameters must be set to <code>true</code></strong><br><strong>Note:</strong> if you use this parameter, additional charges will apply; learn more about the cost of tasks with this parameter <a href=\"https://dataforseo.com/help-center/cost-of-onpage-api-parameters\" target=\"_blank\" rel=\"noopener noreferrer\">in our help article</a>; the cost can be calculated on the <a href=\"https://dataforseo.com/pricing/on-page/onpage-api\" target=\"_blank\" rel=\"noopener noreferrer\">Pricing Page</a>", - "type": [ - "boolean", - "null" - ] - }, - "enable_content_parsing": { - "description": "<em>parse content on crawled pages</em><br>optional field<br>set to <code>true</code> to use the <a href=\"/v3/on_page/content_parsing/live/\" target=\"_blank\" rel=\"noopener noreferrer\">OnPage Content Parsing endpoint</a><br>default value: <code>false</code>", - "type": [ - "boolean", - "null" - ] - }, - "enable_javascript": { - "description": "<em>load javascript on a page</em><br>optional field<br>set to <code>true</code> if you want to load the scripts available on a page<br>default value: <code>false</code><br><strong>Note:</strong> if you use this parameter, additional charges will apply; learn more about the cost of tasks with this parameter <a href=\"https://dataforseo.com/help-center/cost-of-onpage-api-parameters\" target=\"_blank\" rel=\"noopener noreferrer\">in our help article</a>; the cost can be calculated on the <a href=\"https://dataforseo.com/pricing/on-page/onpage-api\" target=\"_blank\" rel=\"noopener noreferrer\">Pricing Page</a>", - "type": [ - "boolean", - "null" - ] - }, - "enable_www_redirect_check": { - "description": "<em>check if the domain implemented the www redirection</em><br>optional field<br>set to <code>true</code> if you want to check if the requested domain implemented the www to non-www or non-www to www redirect;<br>default value: <code>false</code>", - "type": [ - "boolean", - "null" - ] - }, - "enable_xhr": { - "description": "<em>enable XMLHttpRequest on a page</em><br>optional field<br>set to <code>true</code> if you want our crawler to request data from a web server using the XMLHttpRequest object<br>default value: <code>false</code>;if you use this field, <code>enable_javascript</code> must be set to <code>true</code>;", - "type": [ - "boolean", - "null" - ] - }, - "force_sitewide_checks": { - "description": "<em>enable sitewide checks when crawling a single page</em><br>optional field<br>set to <code>true</code> to get data on sitewide checks when crawling a single page;<br>default value: <code>false</code>", - "type": [ - "boolean", - "null" - ] - }, - "load_resources": { - "description": "<em>load resources</em><br>optional field<br>set to <code>true</code> if you want to load image, stylesheets, scripts, and broken resources<br>default value: <code>false</code><br><strong>Note:</strong> if you use this parameter, additional charges will apply; learn more about the cost of tasks with this parameter <a href=\"https://dataforseo.com/help-center/cost-of-onpage-api-parameters\" target=\"_blank\" rel=\"noopener noreferrer\">in our help article</a>; the cost can be calculated on the <a href=\"https://dataforseo.com/pricing/on-page/onpage-api\" target=\"_blank\" rel=\"noopener noreferrer\">Pricing Page</a>", - "type": [ - "boolean", - "null" - ] - }, - "max_crawl_depth": { - "description": "<em>crawl depth</em><br>optional field<br>the linking depth of the pages to crawl;<br>for example, starting page of the crawl is level 0, pages that have links from that page are level 1, etc.", - "type": [ - "integer", - "null" - ] - }, - "max_crawl_pages": { - "description": "<em>crawled pages limit</em><br><strong>required field</strong><br>the number of pages to crawl on the specified domain<br><strong>Note:</strong><br>if you set <code>max_crawl_pages</code> to 1 and do not specify <code>start_url</code> or set a homepage in it, the following sitewide checks will be disabled:<br><code>test_canonicalization</code>, <code>enable_www_redirect_check</code>, <code>test_hidden_server_signature</code>, <code>test_page_not_found</code>, <code>test_directory_browsing</code>, <code>test_https_redirect</code><br>to enable them anyway, set <code>force_sitewide_checks</code> to <code>true</code>if you set <code>max_crawl_pages</code> to 1 and specify <code>start_url</code> other than a homepage, all sitewide checks will be disabled;<br>to enable them anyway, set <code>force_sitewide_checks</code> to <code>true</code>", - "type": "integer" - }, - "pingback_url": { - "description": "<em>notification URL of a completed task</em><br>optional field<br>when a task is completed we will notify you by GET request sent to the URL you have specified<br>you can use the ‘$id’ string as a <code>$id</code> variable and ‘$tag’ as urlencoded <code>$tag</code> variable. We will set the necessary values before sending the request.<br>example:<br><code>http://your-server.com/pingscript?id=$id</code><br><code>http://your-server.com/pingscript?id=$id&tag=$tag</code><br><strong>Note:</strong> special characters in <code>pingback_url</code> will be urlencoded;<br>i.a., the <code>#</code> character will be encoded into <code>%23</code><p>learn more on our <a href=\"https://dataforseo.com/help-center/pingbacks-postbacks-with-dataforseo-api\" target=\"_blank\" rel=\"noopener noreferrer\">Help Center</a>", - "type": [ - "string", - "null" - ] - }, - "priority_urls": { - "description": "<em>urls to be crawled bypassing the queue</em><br>optional field<br>URLs specified in this array will be crawled in the first instance, bypassing the crawling queue;<br><strong>Note:</strong> you should specify the absolute URL;<br>you can specify up to <strong>20 URLs</strong>;<br>all URLs in the array must belong to the <code>target</code> domain;<br>subdomains will be ignored unless the <code>allow_subdomains</code> parameter is set to <code>true</code>example:<br>`\"priority_urls\": [<br>\"https://dataforseo.com/apis/serp-api\",<br>\"https://dataforseo.com/contact\"<br>]`", - "items": { - "type": "string" - }, - "type": [ - "array", - "null" - ] - }, - "respect_sitemap": { - "description": "<em>respect sitemap when crawling</em><br>optional field<br>set to <code>true</code> if you want to follow the order of pages indicated in the primary sitemap when crawling;<br>default value: <code>false</code><br><strong>Note:</strong> if set to <code>true</code>, the <code>click_depth</code> value in the API response will equal <code>0</code>;<br>the <code>max_crawl_depth</code> field of the request will be ignored, you can specify the number of pages to crawl using the <code>max_crawl_pages</code> parameter", - "type": [ - "boolean", - "null" - ] - }, - "return_despite_timeout": { - "description": "<em>return data on pages despite the timeout error</em><br>optional field<br>if <code>true</code>, the data will be provided on pages that failed to load within 120 seconds and responded with a timeout error;<br>default value: <code>false</code>", - "type": [ - "boolean", - "null" - ] - }, - "robots_txt_merge_mode": { - "description": "<em>merge with or override robots.txt settings</em><br>optional field<br>possible values: <code>merge</code>, <code>override</code>;<br>set to <code>override</code> if you want to ignore website crawling restrictions and other robots.txt settings<br>default value: <code>merge</code>;<br><strong>Note:</strong> if set to <code>override</code>, specify the <code>custom_robots_txt</code> parameter", - "type": [ - "string", - "null" - ] - }, - "start_url": { - "description": "<em>the first url to crawl </em><br>optional field<br><strong>Note:</strong> you should specify an absolute URL<br>if you want to crawl a single page, specify its URL in this field and additionally set the <code>max_crawl_pages</code> parameter to <code>1</code><br>you can also use the <a href=\"/v3/on_page/instant_pages/?bash\" target=\"_blank\" rel=\"noopener noreferrer\">live Instant Pages endpoint</a> to get page-specific data", - "type": [ - "string", - "null" - ] - }, - "store_raw_html": { - "description": "<em>store HTML of crawled pages</em><br>optional field<br>set to <code>true</code> if you want to get the HTML of the page using the <a href=\"/v3/on_page/raw_html/\" target=\"_blank\" rel=\"noopener noreferrer\">OnPage Raw HTML endpoint</a><br>default value: <code>false</code>", - "type": [ - "boolean", - "null" - ] - }, - "support_cookies": { - "description": "<em>support cookies on crawled pages</em><br>optional field<br>set to <code>true</code> to support cookies when crawling the pages<br>default value: <code>false</code>", - "type": [ - "boolean", - "null" - ] - }, - "switch_pool": { - "description": "<em>switch proxy pool</em><br>optional field<br>if <code>true</code>, additional proxy pools will be used to obtain the requested data;<br>the parameter can be used if a multitude of tasks is set simultaneously, resulting in occasional <code>rate-limit</code> and/or <code>site_unreachable</code> errors", - "type": [ - "boolean", - "null" - ] - }, - "tag": { - "description": "<em>user-defined task identifier</em><br>optional field<br><em>the character limit is 255</em><br>you can use this parameter to identify the task and match it with the result<br>you will find the specified <code>tag</code> value in the <code>data</code> object of the response", - "type": [ - "string", - "null" - ] - }, - "target": { - "description": "<em>target domain</em><br><strong>required field</strong><br>domain name should be specified without <code>https://</code> and <code>www.</code><br>if you specify the page URL, the results will be returned for the domain included in the URL", - "type": "string" - }, - "validate_micromarkup": { - "description": "<em>enable microdata validation</em><br>optional field<br>set to <code>true</code> if you want to use the <a href=\"/v3/on_page/microdata/\" target=\"_blank\" rel=\"noopener noreferrer\">OnPage API Microdata endpoint</a><br>default value: <code>false</code>", - "type": [ - "boolean", - "null" - ] - } - }, - "type": "object" - } -] - added
Input schema / properties / body / items / oneOfAdded value: +[ + { + "example": [ + { + "custom_js": "meta = {}; meta.url = document.URL; meta;", + "enable_javascript": true, + "load_resources": true, + "max_crawl_pages": 10, + "pingback_url": "https://your-server.com/pingscript?id=$id&tag=$tag", + "tag": "some_string_123", + "target": "dataforseo.com" + } + ], + "properties": { + "accept_language": { + "description": "<em>language header for accessing the website</em><br>optional field<br>all locale formats are supported (xx, xx-XX, xxx-XX, etc.)<br><strong>Note:</strong> if you do not specify this parameter, some websites may deny access; in this case, pages will be returned with the <code>\"type\":\"broken</code> in the response array", + "type": [ + "string", + "null" + ] + }, + "allow_subdomains": { + "description": "<em>include pages on subdomains</em><br>optional field<br>set to <code>true</code> if you want to crawl all subdomains of a target website<br>default value: <code>false</code>", + "type": [ + "boolean", + "null" + ] + }, + "allowed_subdomains": { + "description": "<em>subdomains to crawl</em><br>optional field<br>specify subdomains that you want to crawl<br>example: <code>[\"blog.site.com\", \"my.site.com\", \"shop.site.com\"]</code><br><strong>Note:</strong> to use this parameter, the <code>allow_subdomains</code> parameter should be set to <code>false</code>;<br>otherwise, the content of <code>allowed_subdomains</code> field will be ignored and the results will be returned for all subdomains", + "items": { + "type": "string" + }, + "type": [ + "array", + "null" + ] + }, + "browser_preset": { + "description": "<em>preset for browser screen parameters</em><br>optional field<br>if you use this field, you don't need to indicate <code>browser_screen_width</code>, <code>browser_screen_height</code>, <code>browser_screen_scale_factor</code>possible values:<br><code>desktop</code>, <code>mobile</code>, <code>tablet</code><code>desktop</code> preset will apply the following values:<code>browser_screen_width: 1920</code><br><code>browser_screen_height: 1080</code><br><code>browser_screen_scale_factor: 1</code><code>mobile</code> preset will apply the following values:<code>browser_screen_width: 390</code><br><code>browser_screen_height: 844</code><br><code>browser_screen_scale_factor: 3</code><code>tablet</code> preset will apply the following values:<code>browser_screen_width: 1024</code><br><code>browser_screen_height: 1366</code><br><code>browser_screen_scale_factor: 2</code><br><strong>Note:</strong> to use this parameter, set <code>enable_javascript</code> or <code>enable_browser_rendering</code> to <code>true</code>", + "type": [ + "string", + "null" + ] + }, + "browser_screen_height": { + "description": "<em>browser screen height</em><br>optional field<br>you can set a custom browser screen height to perform an audit for a particular device;<br>if you use this field, you don't need to indicate <code>browser_preset</code> as it will be ignored;<br><strong>Note:</strong> to use this parameter, set <code>enable_javascript</code> or <code>enable_browser_rendering</code> to <code>true</code>minimum value, in pixels: <code>240</code><br>maximum value, in pixels: <code>9999</code>", + "type": [ + "integer", + "null" + ] + }, + "browser_screen_scale_factor": { + "description": "<em>browser screen scale factor</em><br>optional field<br>you can set a custom browser screen resolution ratio to perform audit for a particular device;<br>if you use this field, you don't need to indicate <code>browser_preset</code> as it will be ignored;<br><strong>Note:</strong> to use this parameter, set <code>enable_javascript</code> or <code>enable_browser_rendering</code> to <code>true</code>minimum value: <code>0.5</code><br>maximum value: <code>3</code>", + "type": [ + "number", + "null" + ] + }, + "browser_screen_width": { + "description": "<em>browser screen width</em><br>optional field<br>you can set a custom browser screen width to perform audit for a particular device;<br>if you use this field, you don't need to indicate <code>browser_preset</code> as it will be ignored;<br><strong>Note:</strong> to use this parameter, set <code>enable_javascript</code> or <code>enable_browser_rendering</code> to <code>true</code>minimum value, in pixels: <code>240</code><br>maximum value, in pixels: <code>9999</code>", + "format": "int64", + "type": [ + "integer", + "null" + ] + }, + "calculate_keyword_density": { + "description": "<em>calculate keyword density for the target domain</em><br>optional field<br>set to <code>true</code> if you want to calculate keyword density for website pages<br>default value: <code>false</code><br><strong>Note:</strong> if you use this parameter, additional charges will apply; learn more about the cost of tasks with this parameter <a href=\"https://dataforseo.com/help-center/cost-of-onpage-api-parameters\" target=\"_blank\" rel=\"noopener noreferrer\">in our help article</a><br>once the crawl is completed, you can obtain keyword density values with <a href=\"/v3/on_page/keyword_density?bash\" target=\"_blank\" rel=\"noopener noreferrer\">the Keyword Density endpoint</a>", + "type": [ + "boolean", + "null" + ] + }, + "check_spell": { + "description": "<em>check spelling</em><br>optional field<br>set to <code>true</code> to check spelling on a website using <a href=\"http://hunspell.github.io/\" target=\"_blank\" rel=\"noopener noreferrer\">Hunspell</a> library<br>default value: <code>false</code>", + "type": [ + "boolean", + "null" + ] + }, + "check_spell_exceptions": { + "description": "<em>words excluded from spell check</em><br>optional field<br>specify the words that you want to exclude from spell check<br>maximum word length: 100 characters<br>maximum amount of words: 1000<br>example: <code>\"SERP\", \"minifiers\", \"JavaScript\"</code>", + "items": { + "type": "string" + }, + "type": [ + "array", + "null" + ] + }, + "check_spell_language": { + "description": "<em>language of the spell check</em><br>optional field<br>supported languages: 'hy', 'eu', 'bg', 'ca', 'hr', 'cs', 'da', 'nl', 'en', 'eo', 'et', 'fo', 'fa', 'fr', 'fy', 'gl', 'ka', 'de', 'el', 'he', 'hu', 'is', 'ia', 'ga', 'it', 'rw', 'la', 'lv', 'lt', 'mk', 'mn', 'ne', 'nb', 'nn', 'pl', 'pt', 'ro', 'gd', 'sr', 'sk', 'sl', 'es', 'sv', 'tr', 'tk', 'uk', 'vi'<br><strong>Note:</strong> if no language is specified, it will be set automatically based on page content", + "type": [ + "string", + "null" + ] + }, + "checks_threshold": { + "additionalProperties": { + "format": "int64", + "type": [ + "integer", + "null" + ] + }, + "description": "<em>custom threshold values for checks</em><br>optional field<br>you can specify custom threshold values for the parameters included in the <code>checks</code> object of OnPage API responses;<br><strong>Note:</strong> only integer threshold values can be modified;<br>for example, the <code>high_loading_time</code> and <code>large_page_size</code> parameters are set to 3 seconds and 1 megabyte respectively by default;<br>if you want to change these thresholds to 1 second and 1000 kbytes, use the following snippet:<br>`\"checks_threshold\": {<br>\"high_loading_time\": 1,<br>\"large_page_size\": 1000<br>}`<br>available customizable parameters with default values:<br>`\"title_too_short\", default value: 30, type: \"int\"<br>\"title_too_long\", default value: 65, type: \"int\"<br>\"small_page_size\", default value: 1024, type: \"int\"<br>\"large_page_size\", default value: 1048576 (1024 * 1024), type: \"int\"<br>\"low_character_count\", default value: 1024, type: \"int\"<br>\"high_character_count\", default value: 256000 (250 * 1024), type: \"int\"<br>\"low_content_rate\", default value: 0.1, type: \"float\"<br>\"high_content_rate\", default value: 0.9, type: \"float\"<br>\"high_loading_time\", default value: 3000, type: \"int\"<br>\"high_waiting_time\", default value: 1500, type: \"int\"<br>\"low_readability_rate\", default value: 15.0, type: \"float\"<br>\"irrelevant_description\", default value: 0.2, type: \"float\"<br>\"irrelevant_title\", default value: 0.3, type: \"float\"<br>\"irrelevant_meta_keywords\", default value: 0.6, type: \"float\"`", + "type": [ + "object", + "null" + ] + }, + "crawl_delay": { + "description": "<em>delay between hits, ms</em><br>optional field<br>the custom delay between crawler hits to the server<br>default value: <code>2000</code>", + "type": [ + "integer", + "null" + ] + }, + "crawl_sitemap_only": { + "description": "<em>crawl only pages indicated in the sitemap</em><br>optional field<br>set to <code>true</code> if you want to crawl only the pages indicated in the sitemap<br>if you set this parameter to <code>true</code> and do not specify <code>custom_sitemap</code>, we will crawl the default sitemap<br>default value: <code>false</code><br><strong>Note:</strong> if you want to use this parameter, <code>respect_sitemap</code> should be <code>true</code>", + "type": [ + "boolean", + "null" + ] + }, + "custom_js": { + "description": "<em>custom javascript</em><br>optional field<br><strong>Note</strong> that the execution time for the script you enter here should be 700 ms maximum, for example, you can use the following JS snippet to check if the website contains Google Tag Manager as a <code>scr</code> attribute:<br><code>let meta = { haveGoogleAnalytics: false, haveTagManager: false };rnfor (var i = 0; i < document.scripts.length; i++) {rn let src = document.scripts[i].getAttribute(\"src\");rn if (src != undefined) {rn if (src.indexOf(\"analytics.js\") >= 0)rn meta.haveGoogleAnalytics = true;rntif (src.indexOf(\"gtm.js\") >= 0)rn meta.haveTagManager = true;rn }rn}rnmeta;</code>the returned value depends on what you specified in this field. For instance, if you specify the following script:<br>`meta = {}; meta.url = document.URL; meta.test = 'test'; meta;`<br>as a response you will receive the following data:<br>`\"custom_js_response\": {<br>\"url\": \"https://dataforseo.com/\",<br>\"test\": \"test\"<br>}`<br><strong>Note:</strong> the length of the script you enter must be no more than 2000 characters", + "type": [ + "string", + "null" + ] + }, + "custom_robots_txt": { + "description": "<em>custom robots.txt settings</em><br>optional field<br>example: <code>Disallow: /directory1/</code>", + "type": [ + "string", + "null" + ] + }, + "custom_sitemap": { + "description": "<em>custom sitemap url</em><br>optional field<br>the URL of the page where the alternative sitemap is located<br><strong>Note:</strong> if you want to use this parameter, <code>respect_sitemap</code> should be <code>true</code>", + "type": [ + "string", + "null" + ] + }, + "custom_user_agent": { + "description": "<em>custom user agent</em><br>optional field<br>custom user agent for crawling a website<br>example: <code>Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36<br></code><br>default value: <code>Mozilla/5.0 (compatible; RSiteAuditor)</code>", + "type": [ + "string", + "null" + ] + }, + "disable_cookie_popup": { + "description": "<em>disable the cookie popup</em><br>optional field<br>set to <code>true</code> if you want to disable the popup requesting cookie consent from the user;<br>default value:<br><code>false</code>", + "type": [ + "boolean", + "null" + ] + }, + "disable_page_checks": { + "description": "<em>prevent certain page checks from running</em><br>optional field<br>specify certain <code>checks</code> to prevent them from running and impacting the <code>onpage_score</code>example:<br><code>\"disable_page_checks\": [\"is_5xx_code\", \"is_4xx_code\"]</code>", + "items": { + "type": "string" + }, + "type": [ + "array", + "null" + ] + }, + "disable_sitewide_checks": { + "description": "<em>prevent certain sitewide checks from running</em><br>optional field<br>specify the following <code>checks</code> to prevent them from running on the <code>target</code> website:<br><code>\"test_page_not_found\"</code><br><code>\"test_canonicalization\"</code><br><code>\"test_https_redirect\"</code><br><code>\"test_directory_browsing\"</code>example:<br><code>\"disable_sitewide_checks\": [\"test_directory_browsing\", \"test_page_not_found\"]</code>learn more on <a href=\"https://dataforseo.com/help-center/how-to-disable-sitewide-checks-in-onpage-api\" target=\"_blank\" rel=\"noopener noreferrer\">our help center</a>", + "items": { + "type": "string" + }, + "type": [ + "array", + "null" + ] + }, + "disallowed_subdomains": { + "description": "<em>subdomains not to crawl</em><br>optional field<br>specify subdomains that you don't want to crawl<br>example: <code>[\"status.site.com\", \"docs.site.com\"]</code><br><strong>Note:</strong> to use this parameter, the <code>allow_subdomains</code> parameter should be set to <code>true</code>", + "items": { + "type": "string" + }, + "type": [ + "array", + "null" + ] + }, + "enable_browser_rendering": { + "description": "<em>emulate browser rendering to measure Core Web Vitals</em><br>optional field<br>by using this parameter you will be able to emulate a browser when loading a web page;<br><code>enable_browser_rendering</code> loads styles, images, fonts, animations, videos, and other resources on a page;<br>default value: <code>false</code><br>set to <code>true</code> to obtain Core Web Vitals (FID, CLS, LCP) metrics in the response;<br><strong>if you use this field, <code>enable_javascript</code>, and <code>load_resources</code> parameters must be set to <code>true</code></strong><br><strong>Note:</strong> if you use this parameter, additional charges will apply; learn more about the cost of tasks with this parameter <a href=\"https://dataforseo.com/help-center/cost-of-onpage-api-parameters\" target=\"_blank\" rel=\"noopener noreferrer\">in our help article</a>; the cost can be calculated on the <a href=\"https://dataforseo.com/pricing/on-page/onpage-api\" target=\"_blank\" rel=\"noopener noreferrer\">Pricing Page</a>", + "type": [ + "boolean", + "null" + ] + }, + "enable_content_parsing": { + "description": "<em>parse content on crawled pages</em><br>optional field<br>set to <code>true</code> to use the <a href=\"/v3/on_page/content_parsing/live/\" target=\"_blank\" rel=\"noopener noreferrer\">OnPage Content Parsing endpoint</a><br>default value: <code>false</code>", + "type": [ + "boolean", + "null" + ] + }, + "enable_javascript": { + "description": "<em>load javascript on a page</em><br>optional field<br>set to <code>true</code> if you want to load the scripts available on a page<br>default value: <code>false</code><br><strong>Note:</strong> if you use this parameter, additional charges will apply; learn more about the cost of tasks with this parameter <a href=\"https://dataforseo.com/help-center/cost-of-onpage-api-parameters\" target=\"_blank\" rel=\"noopener noreferrer\">in our help article</a>; the cost can be calculated on the <a href=\"https://dataforseo.com/pricing/on-page/onpage-api\" target=\"_blank\" rel=\"noopener noreferrer\">Pricing Page</a>", + "type": [ + "boolean", + "null" + ] + }, + "enable_www_redirect_check": { + "description": "<em>check if the domain implemented the www redirection</em><br>optional field<br>set to <code>true</code> if you want to check if the requested domain implemented the www to non-www or non-www to www redirect;<br>default value: <code>false</code>", + "type": [ + "boolean", + "null" + ] + }, + "enable_xhr": { + "description": "<em>enable XMLHttpRequest on a page</em><br>optional field<br>set to <code>true</code> if you want our crawler to request data from a web server using the XMLHttpRequest object<br>default value: <code>false</code>;if you use this field, <code>enable_javascript</code> must be set to <code>true</code>;", + "type": [ + "boolean", + "null" + ] + }, + "force_sitewide_checks": { + "description": "<em>enable sitewide checks when crawling a single page</em><br>optional field<br>set to <code>true</code> to get data on sitewide checks when crawling a single page;<br>default value: <code>false</code>", + "type": [ + "boolean", + "null" + ] + }, + "load_resources": { + "description": "<em>load resources</em><br>optional field<br>set to <code>true</code> if you want to load image, stylesheets, scripts, and broken resources<br>default value: <code>false</code><br><strong>Note:</strong> if you use this parameter, additional charges will apply; learn more about the cost of tasks with this parameter <a href=\"https://dataforseo.com/help-center/cost-of-onpage-api-parameters\" target=\"_blank\" rel=\"noopener noreferrer\">in our help article</a>; the cost can be calculated on the <a href=\"https://dataforseo.com/pricing/on-page/onpage-api\" target=\"_blank\" rel=\"noopener noreferrer\">Pricing Page</a>", + "type": [ + "boolean", + "null" + ] + }, + "max_crawl_depth": { + "description": "<em>crawl depth</em><br>optional field<br>the linking depth of the pages to crawl;<br>for example, starting page of the crawl is level 0, pages that have links from that page are level 1, etc.", + "type": [ + "integer", + "null" + ] + }, + "max_crawl_pages": { + "description": "<em>crawled pages limit</em><br><strong>required field</strong><br>the number of pages to crawl on the specified domain<br><strong>Note:</strong><br>if you set <code>max_crawl_pages</code> to 1 and do not specify <code>start_url</code> or set a homepage in it, the following sitewide checks will be disabled:<br><code>test_canonicalization</code>, <code>enable_www_redirect_check</code>, <code>test_hidden_server_signature</code>, <code>test_page_not_found</code>, <code>test_directory_browsing</code>, <code>test_https_redirect</code><br>to enable them anyway, set <code>force_sitewide_checks</code> to <code>true</code>if you set <code>max_crawl_pages</code> to 1 and specify <code>start_url</code> other than a homepage, all sitewide checks will be disabled;<br>to enable them anyway, set <code>force_sitewide_checks</code> to <code>true</code>", + "type": "integer" + }, + "pingback_url": { + "description": "<em>notification URL of a completed task</em><br>optional field<br>when a task is completed we will notify you by GET request sent to the URL you have specified<br>you can use the ‘$id’ string as a <code>$id</code> variable and ‘$tag’ as urlencoded <code>$tag</code> variable. We will set the necessary values before sending the request.<br>example:<br><code>http://your-server.com/pingscript?id=$id</code><br><code>http://your-server.com/pingscript?id=$id&tag=$tag</code><br><strong>Note:</strong> special characters in <code>pingback_url</code> will be urlencoded;<br>i.a., the <code>#</code> character will be encoded into <code>%23</code><p>learn more on our <a href=\"https://dataforseo.com/help-center/pingbacks-postbacks-with-dataforseo-api\" target=\"_blank\" rel=\"noopener noreferrer\">Help Center</a>", + "type": [ + "string", + "null" + ] + }, + "priority_urls": { + "description": "<em>urls to be crawled bypassing the queue</em><br>optional field<br>URLs specified in this array will be crawled in the first instance, bypassing the crawling queue;<br><strong>Note:</strong> you should specify the absolute URL;<br>you can specify up to <strong>20 URLs</strong>;<br>all URLs in the array must belong to the <code>target</code> domain;<br>subdomains will be ignored unless the <code>allow_subdomains</code> parameter is set to <code>true</code>example:<br>`\"priority_urls\": [<br>\"https://dataforseo.com/apis/serp-api\",<br>\"https://dataforseo.com/contact\"<br>]`", + "items": { + "type": "string" + }, + "type": [ + "array", + "null" + ] + }, + "respect_sitemap": { + "description": "<em>respect sitemap when crawling</em><br>optional field<br>set to <code>true</code> if you want to follow the order of pages indicated in the primary sitemap when crawling;<br>default value: <code>false</code><br><strong>Note:</strong> if set to <code>true</code>, the <code>click_depth</code> value in the API response will equal <code>0</code>;<br>the <code>max_crawl_depth</code> field of the request will be ignored, you can specify the number of pages to crawl using the <code>max_crawl_pages</code> parameter", + "type": [ + "boolean", + "null" + ] + }, + "return_despite_timeout": { + "description": "<em>return data on pages despite the timeout error</em><br>optional field<br>if <code>true</code>, the data will be provided on pages that failed to load within 120 seconds and responded with a timeout error;<br>default value: <code>false</code>", + "type": [ + "boolean", + "null" + ] + }, + "robots_txt_merge_mode": { + "description": "<em>merge with or override robots.txt settings</em><br>optional field<br>possible values: <code>merge</code>, <code>override</code>;<br>set to <code>override</code> if you want to ignore website crawling restrictions and other robots.txt settings<br>default value: <code>merge</code>;<br><strong>Note:</strong> if set to <code>override</code>, specify the <code>custom_robots_txt</code> parameter", + "type": [ + "string", + "null" + ] + }, + "start_url": { + "description": "<em>the first url to crawl </em><br>optional field<br><strong>Note:</strong> you should specify an absolute URL<br>if you want to crawl a single page, specify its URL in this field and additionally set the <code>max_crawl_pages</code> parameter to <code>1</code><br>you can also use the <a href=\"/v3/on_page/instant_pages/?bash\" target=\"_blank\" rel=\"noopener noreferrer\">live Instant Pages endpoint</a> to get page-specific data", + "type": [ + "string", + "null" + ] + }, + "store_raw_html": { + "description": "<em>store HTML of crawled pages</em><br>optional field<br>set to <code>true</code> if you want to get the HTML of the page using the <a href=\"/v3/on_page/raw_html/\" target=\"_blank\" rel=\"noopener noreferrer\">OnPage Raw HTML endpoint</a><br>default value: <code>false</code>", + "type": [ + "boolean", + "null" + ] + }, + "support_cookies": { + "description": "<em>support cookies on crawled pages</em><br>optional field<br>set to <code>true</code> to support cookies when crawling the pages<br>default value: <code>false</code>", + "type": [ + "boolean", + "null" + ] + }, + "switch_pool": { + "description": "<em>switch proxy pool</em><br>optional field<br>if <code>true</code>, additional proxy pools will be used to obtain the requested data;<br>the parameter can be used if a multitude of tasks is set simultaneously, resulting in occasional <code>rate-limit</code> and/or <code>site_unreachable</code> errors", + "type": [ + "boolean", + "null" + ] + }, + "tag": { + "description": "<em>user-defined task identifier</em><br>optional field<br><em>the character limit is 255</em><br>you can use this parameter to identify the task and match it with the result<br>you will find the specified <code>tag</code> value in the <code>data</code> object of the response", + "type": [ + "string", + "null" + ] + }, + "target": { + "description": "<em>target domain</em><br><strong>required field</strong><br>domain name should be specified without <code>https://</code> and <code>www.</code><br>if you specify the page URL, the results will be returned for the domain included in the URL", + "type": "string" + }, + "validate_micromarkup": { + "description": "<em>enable microdata validation</em><br>optional field<br>set to <code>true</code> if you want to use the <a href=\"/v3/on_page/microdata/\" target=\"_blank\" rel=\"noopener noreferrer\">OnPage API Microdata endpoint</a><br>default value: <code>false</code>", + "type": [ + "boolean", + "null" + ] + } + }, + "type": "object" + } +]
- Changed
post_dataforseo_on_page_uncrawlable_resources2 fields changed- removed
Input schema / properties / body / items / anyOfRemoved value: -[ - { - "example": [ - { - "filters": [ - [ - "meta.content_type", - "=", - "image/jpeg" - ], - "and", - [ - "url", - "like", - "%go%" - ] - ], - "id": "07281559-0695-0216-0000-c269be8b7592", - "limit": 10 - } - ], - "properties": { - "filters": { - "description": "<em>array of results filtering parameters</em><br>optional field<br><strong>you can add several filters at once (8 filters maximum)</strong><br>you should set a logical operator <code>and</code>, <code>or</code> between the conditions<br>the following operators are supported:<br><code>regex</code>, <code>not_regex</code>, <code><</code>, <code><=</code>, <code>></code>, <code>>=</code>, <code>=</code>, <code><></code>, <code>in</code>, <code>not_in</code>, <code>like</code>, <code>not_like</code><br>you can use the <code>%</code> operator with <code>like</code> and <code>not_like</code> to match any string of zero or more characters<br>example:<br><code> [[\"meta.content_type\",\"=\",\"image/jpeg\"],<br>\"and\",<br>[\"url\",\"not_like\",\"%/help-center/%\"]]</code><p>The full list of possible filters is available <a href=\"/v3/on_page/filters_and_thresholds/?bash\" target=\"_blank\" rel=\"noopener noreferrer\">by this link.</a>", - "items": { - "type": [ - "object", - "null" - ] - }, - "type": [ - "array", - "null" - ] - }, - "id": { - "description": "<em>ID of the task</em><br><strong>required field</strong><br>you can get this ID in the response of the <a href=\"/v3/on_page/task_post/\">Task POST</a> endpoint<br>example:<br>\"07131248-1535-0216-1000-17384017ad04\"", - "type": "string" - }, - "limit": { - "description": "<em>the maximum number of returned uncrawlable resources</em><br>optional field<br>default value: <code>100</code><br>maximum value: <code>1000</code>", - "type": [ - "integer", - "null" - ] - }, - "offset": { - "description": "<em>offset in the results array of returned uncrawlable resources</em><br>optional field<br>default value: <code>0</code><br> maximum value: <code>2000000</code><br>if you specify the <code>10</code> value, the first ten invalid resources in the results array will be omitted and the data will be provided for the successive invalid resources", - "type": [ - "integer", - "null" - ] - }, - "order_by": { - "description": "<em>results sorting rules</em><br>optional field<br>you can use the same values as in the <code>filters</code> array to sort the results<br>possible sorting types:<br><code>asc</code> - results will be sorted in the ascending order<br><code>desc</code> - results will be sorted in the descending order<br>you should use a comma to set up a sorting type<br>example:<br><code>[\"meta.content_type,desc\"]</code><br><strong>note that you can set no more than three sorting rules in a single request</strong><br>you should use a comma to separate several sorting rules<br>example:<br><code>[\"meta.content_type,asc\",\"fetch_time,desc\"]</code>", - "items": { - "type": "string" - }, - "type": [ - "array", - "null" - ] - } - }, - "type": "object" - } -] - added
Input schema / properties / body / items / oneOfAdded value: +[ + { + "example": [ + { + "filters": [ + [ + "meta.content_type", + "=", + "image/jpeg" + ], + "and", + [ + "url", + "like", + "%go%" + ] + ], + "id": "07281559-0695-0216-0000-c269be8b7592", + "limit": 10 + } + ], + "properties": { + "filters": { + "description": "<em>array of results filtering parameters</em><br>optional field<br><strong>you can add several filters at once (8 filters maximum)</strong><br>you should set a logical operator <code>and</code>, <code>or</code> between the conditions<br>the following operators are supported:<br><code>regex</code>, <code>not_regex</code>, <code><</code>, <code><=</code>, <code>></code>, <code>>=</code>, <code>=</code>, <code><></code>, <code>in</code>, <code>not_in</code>, <code>like</code>, <code>not_like</code><br>you can use the <code>%</code> operator with <code>like</code> and <code>not_like</code> to match any string of zero or more characters<br>example:<br><code> [[\"meta.content_type\",\"=\",\"image/jpeg\"],<br>\"and\",<br>[\"url\",\"not_like\",\"%/help-center/%\"]]</code><p>The full list of possible filters is available <a href=\"/v3/on_page/filters_and_thresholds/?bash\" target=\"_blank\" rel=\"noopener noreferrer\">by this link.</a>", + "items": { + "type": [ + "object", + "null" + ] + }, + "type": [ + "array", + "null" + ] + }, + "id": { + "description": "<em>ID of the task</em><br><strong>required field</strong><br>you can get this ID in the response of the <a href=\"/v3/on_page/task_post/\">Task POST</a> endpoint<br>example:<br>\"07131248-1535-0216-1000-17384017ad04\"", + "type": "string" + }, + "limit": { + "description": "<em>the maximum number of returned uncrawlable resources</em><br>optional field<br>default value: <code>100</code><br>maximum value: <code>1000</code>", + "type": [ + "integer", + "null" + ] + }, + "offset": { + "description": "<em>offset in the results array of returned uncrawlable resources</em><br>optional field<br>default value: <code>0</code><br> maximum value: <code>2000000</code><br>if you specify the <code>10</code> value, the first ten invalid resources in the results array will be omitted and the data will be provided for the successive invalid resources", + "type": [ + "integer", + "null" + ] + }, + "order_by": { + "description": "<em>results sorting rules</em><br>optional field<br>you can use the same values as in the <code>filters</code> array to sort the results<br>possible sorting types:<br><code>asc</code> - results will be sorted in the ascending order<br><code>desc</code> - results will be sorted in the descending order<br>you should use a comma to set up a sorting type<br>example:<br><code>[\"meta.content_type,desc\"]</code><br><strong>note that you can set no more than three sorting rules in a single request</strong><br>you should use a comma to separate several sorting rules<br>example:<br><code>[\"meta.content_type,asc\",\"fetch_time,desc\"]</code>", + "items": { + "type": "string" + }, + "type": [ + "array", + "null" + ] + } + }, + "type": "object" + } +]
- Changed
post_dataforseo_on_page_waterfall2 fields changed- removed
Input schema / properties / body / items / anyOfRemoved value: -[ - { - "example": [ - { - "id": "08101204-0696-0216-0000-644a7b21a48a", - "url": "https://dataforseo.com/tag/broken-links" - } - ], - "properties": { - "id": { - "description": "<em>ID of the task</em><br><strong>required field</strong><br>you can get this ID in the response of the <a href=\"/v3/on_page/task_post/\">Task POST</a> endpoint<br>example:<br>\"07131248-1535-0216-1000-17384017ad04\"", - "type": "string" - }, - "tag": { - "description": "<em>user-defined task identifier</em><br>optional field<br><em>the character limit is 255</em><br>you can use this parameter to identify the task and match it with the result<br>you will find the specified <code>tag</code> value in the <code>data</code> object of the response", - "type": [ - "string", - "null" - ] - }, - "url": { - "description": "<em>page URL</em><br><strong>required field</strong><br>specify the pages you want to receive timing for", - "type": "string" - } - }, - "type": "object" - } -] - added
Input schema / properties / body / items / oneOfAdded value: +[ + { + "example": [ + { + "id": "08101204-0696-0216-0000-644a7b21a48a", + "url": "https://dataforseo.com/tag/broken-links" + } + ], + "properties": { + "id": { + "description": "<em>ID of the task</em><br><strong>required field</strong><br>you can get this ID in the response of the <a href=\"/v3/on_page/task_post/\">Task POST</a> endpoint<br>example:<br>\"07131248-1535-0216-1000-17384017ad04\"", + "type": "string" + }, + "tag": { + "description": "<em>user-defined task identifier</em><br>optional field<br><em>the character limit is 255</em><br>you can use this parameter to identify the task and match it with the result<br>you will find the specified <code>tag</code> value in the <code>data</code> object of the response", + "type": [ + "string", + "null" + ] + }, + "url": { + "description": "<em>page URL</em><br><strong>required field</strong><br>specify the pages you want to receive timing for", + "type": "string" + } + }, + "type": "object" + } +]
26 tool updates
- Added
batch_get_schema - Added
batch_quote - Changed
batch_use18 fields changed- added
Input schema / $schemaAdded value: +"https://json-schema.org/draft/2020-12/schema" - removed
Input schema / properties / calls / descriptionRemoved value: -"Up to 20 items of {call_id, operation_id, arguments}; steps at the same execution_level of a plan go in one batch" - added
Input schema / properties / calls / items / $schemaAdded value: +"https://json-schema.org/draft/2020-12/schema" - changed
Input schema / properties / calls / items / additionalPropertiesPrevious value: -trueNew value: +false - added
Input schema / properties / calls / items / propertiesAdded value: +{ + "arguments": { + "additionalProperties": true, + "description": "Strictly schema-compliant arguments using the exact field names and types from this tool's arguments_schema.", + "type": "object" + }, + "call_id": { + "description": "Caller-chosen identifier unique within this batch.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "tool": { + "description": "Exact tool name returned by search or batch_get_schema. Never invent a name.", + "minLength": 1, + "type": "string" + } +} - added
Input schema / properties / calls / items / requiredAdded value: +[ + "call_id", + "tool", + "arguments" +] - added
Input schema / properties / calls / maxItemsAdded value: +20 - added
Input schema / properties / calls / minItemsAdded value: +1 - removed
Input schema / properties / max_price_usdRemoved value: -{ - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Per-call price cap applied to every item" -} - removed
Input schema / properties / search_id / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / search_id / defaultRemoved value: -null - changed
Input schema / properties / search_id / descriptionPrevious value: -"search_id from the search that found these operations"New value: +"Optional search correlation identifier returned by search." - added
Input schema / properties / search_id / typeAdded value: +"string" - added
Input schema / properties / session_idAdded value: +{ + "description": "Reuse the session_id returned by Search in all subsequent tool calls for this task. If omitted, a new session is created.", + "maxLength": 128, + "pattern": "^[A-Za-z0-9_-]*$", + "type": "string" +} - added
Output schema / $defsAdded value: +{ + "jsonValue": { + "anyOf": [ + { + "additionalProperties": { + "$ref": "#/$defs/jsonValue" + }, + "type": "object" + }, + { + "items": { + "$ref": "#/$defs/jsonValue" + }, + "type": "array" + }, + { + "type": "string" + }, + { + "type": "number" + }, + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "description": "JSON value returned by the upstream tool." + } +} - added
Output schema / $schemaAdded value: +"https://json-schema.org/draft/2020-12/schema" - added
Output schema / propertiesAdded value: +{ + "batch_id": { + "type": "string" + }, + "error_count": { + "minimum": 0, + "type": "integer" + }, + "next_steps_guidance": { + "description": "Deterministic next-step instructions derived from this result. Not an authorization grant.", + "items": { + "type": "string" + }, + "type": "array" + }, + "results": { + "items": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "properties": { + "call_id": { + "type": "string" + }, + "customer_cost_micros_usd": { + "description": "Actual customer charge settled by AIsaServices, in micro-USD. Omitted when the upstream response does not report it.", + "minimum": 0, + "type": "integer" + }, + "data": { + "$ref": "#/$defs/jsonValue" + }, + "error": { + "anyOf": [ + { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "properties": { + "message": { + "type": "string" + }, + "retryable": { + "type": "boolean" + }, + "status": { + "type": "integer" + }, + "type": { + "enum": [ + "validation", + "authentication", + "payment", + "permission", + "rate_limit", + "upstream", + "timeout", + "internal" + ], + "type": "string" + } + }, + "required": [ + "type", + "status", + "retryable" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "request_id": { + "type": "string" + }, + "successful": { + "type": "boolean" + }, + "tool": { + "type": "string" + }, + "upstream_status": { + "description": "HTTP status returned by AIsaServices when a request was dispatched.", + "type": "integer" + } + }, + "required": [ + "call_id", + "tool", + "successful", + "request_id" + ], + "type": "object" + }, + "type": "array" + }, + "session_id": { + "description": "Reuse the session_id returned by Search in all subsequent tool calls for this task. If omitted, a new session is created.", + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9_-]*$", + "type": "string" + }, + "success_count": { + "minimum": 0, + "type": "integer" + }, + "total_count": { + "minimum": 1, + "type": "integer" + } +} - added
Output schema / requiredAdded value: +[ + "session_id", + "batch_id", + "total_count", + "success_count", + "error_count", + "results", + "next_steps_guidance" +]
- Changed
get_dataforseo_on_page_available_filters1 field changed- added
Output schema / x-fastmcp-wrap-resultAdded value: +true
- Changed
get_dataforseo_on_page_lighthouse_audits1 field changed- added
Output schema / x-fastmcp-wrap-resultAdded value: +true
- Changed
get_dataforseo_on_page_lighthouse_languages1 field changed- added
Output schema / x-fastmcp-wrap-resultAdded value: +true
- Changed
get_dataforseo_on_page_lighthouse_versions1 field changed- added
Output schema / x-fastmcp-wrap-resultAdded value: +true
- Changed
get_dataforseo_on_page_summary3 fields changed- changed
Input schema / properties / id / descriptionPrevious value: -"task identifier required field you can get this ID in the response of the Task POST endpoint example: “07131248-1535-0216-1000-17384017ad04”"New value: +"<em>task identifier</em><br><strong>required field</strong><br>you can get this ID in the response of the <a href=\"/v3/on_page/task_post/\" target=\"_blank\" rel=\"noopener noreferrer\">Task POST</a> endpoint<br>example:<br>“07131248-1535-0216-1000-17384017ad04”" - added
Input schema / properties / id / exampleAdded value: +"00000000-0000-0000-0000-000000000000" - added
Output schema / x-fastmcp-wrap-resultAdded value: +true
- Changed
get_details13 fields changed- added
Input schema / $schemaAdded value: +"https://json-schema.org/draft/2020-12/schema" - removed
Input schema / properties / argumentsRemoved value: -{ - "anyOf": [ - { - "additionalProperties": true, - "type": "object" - }, - { - "type": "null" - } - ], - "default": null, - "description": "The arguments the operation would be called with, for a price that reflects them. Keyed by operation_id for a batch, or passed flat for a single operation_id. Routes whose required parameters are validated before pricing have no price without them." -} - added
Input schema / properties / include_arguments_schemaAdded value: +{ + "default": true, + "description": "Return the complete arguments_schema. Defaults to true.", + "type": "boolean" +} - changed
Input schema / properties / include_documentation / descriptionPrevious value: -"Include the complete native public OpenAPI document, reference closure and scoped completeness. Existing execution schemas remain unchanged."New value: +"Return the complete immutable public OpenAPI operation, referenced declarations, provenance and scoped completeness. Documentation does not change execution support." - added
Input schema / properties / include_response_schemaAdded value: +{ + "default": false, + "description": "Return the complete response_schema. Defaults to false.", + "type": "boolean" +} - removed
Input schema / properties / operation_idRemoved value: -{ - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "One operation_id from search" -} - removed
Input schema / properties / operation_idsRemoved value: -{ - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Up to 20 operation_ids, for a batch" -} - added
Input schema / properties / session_idAdded value: +{ + "description": "Reuse the session_id returned by Search in all subsequent tool calls for this task. If omitted, a new session is created.", + "maxLength": 128, + "pattern": "^[A-Za-z0-9_-]*$", + "type": "string" +} - added
Input schema / properties / toolsAdded value: +{ + "description": "Exact tool names returned by search whose complete contracts are needed. Never invent tool names.", + "items": { + "minLength": 1, + "pattern": "^\\S(?:.*\\S)?$", + "type": "string" + }, + "maxItems": 20, + "minItems": 1, + "type": "array", + "uniqueItems": true +} - removed
Input schema / properties / with_quoteRemoved value: -{ - "default": true, - "description": "Whether each operation is priced for this account before the answer. One round trip per operation; spends nothing.", - "type": "boolean" -} - added
Input schema / requiredAdded value: +[ + "tools" +] - added
Output schema / propertiesAdded value: +{ + "error_count": { + "type": "integer" + }, + "next_steps_guidance": { + "anyOf": [ + { + "type": "null" + }, + { + "type": "array" + } + ], + "items": { + "type": "string" + } + }, + "session_id": { + "description": "Reuse the session_id returned by Search in all subsequent tool calls for this task. If omitted, a new session is created.", + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9_-]{1,128}$", + "type": "string" + }, + "success_count": { + "type": "integer" + }, + "tools": { + "additionalProperties": { + "additionalProperties": false, + "properties": { + "arguments_schema": { + "additionalProperties": true, + "anyOf": [ + { + "type": "null" + }, + { + "type": "object" + } + ] + }, + "canonical_operation_id": { + "type": "string" + }, + "documentation": { + "additionalProperties": true, + "type": "object" + }, + "error": { + "additionalProperties": false, + "anyOf": [ + { + "type": "null" + }, + { + "type": "object" + } + ], + "properties": { + "code": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "code", + "message" + ] + }, + "execution_supported": { + "description": "Whether this router can execute and quote the operation; false retains documentation and discovery only.", + "type": "boolean" + }, + "execution_unsupported_reason": { + "description": "Why execution and quoting remain unavailable through this router.", + "type": "string" + }, + "idempotent": { + "anyOf": [ + { + "type": "null" + }, + { + "type": "boolean" + } + ] + }, + "known_pitfalls": { + "anyOf": [ + { + "type": "null" + }, + { + "type": "array" + } + ], + "items": { + "type": "string" + } + }, + "read_only": { + "anyOf": [ + { + "type": "null" + }, + { + "type": "boolean" + } + ] + }, + "response_schema": { + "additionalProperties": true, + "anyOf": [ + { + "type": "null" + }, + { + "type": "object" + } + ] + }, + "side_effects": { + "anyOf": [ + { + "type": "null" + }, + { + "type": "array" + } + ], + "items": { + "type": "string" + } + }, + "successful": { + "type": "boolean" + } + }, + "required": [ + "successful" + ], + "type": "object" + }, + "type": "object" + }, + "total_count": { + "type": "integer" + } +} - added
Output schema / requiredAdded value: +[ + "error_count", + "next_steps_guidance", + "session_id", + "success_count", + "tools", + "total_count" +]
- Changed
post_dataforseo_on_page_content_parsing7 fields changed- added
Input schema / properties / body / exampleAdded value: +[ + { + "id": "11161551-1535-0216-0000-500b3f307f92", + "url": "https://dataforseo.com/blog/a-versatile-alternative-to-google-trends-exploring-the-power-of-dataforseo-trends-api" + } +] - added
Input schema / properties / body / items / anyOfAdded value: +[ + { + "example": [ + { + "id": "11161551-1535-0216-0000-500b3f307f92", + "url": "https://dataforseo.com/blog/a-versatile-alternative-to-google-trends-exploring-the-power-of-dataforseo-trends-api" + } + ], + "properties": { + "id": { + "description": "<em>ID of the task</em><br><strong>required field</strong><br>you can get this ID in the response of the <a href=\"/v3/on_page/task_post/\">Task POST</a> endpoint<br><strong>note:</strong> the <code>enable_content_parsing</code> parameter in the POST request must be set to <code>true</code><br>example:<br><code>\"07131248-1535-0216-1000-17384017ad04\"</code>", + "type": "string" + }, + "markdown_view": { + "description": "<em>return page content as markdown</em><br>optional field<br>if set to <code>true</code>, the markdown-formatted content of the page will be returned in the <code>page_as_markdown</code> field of the response;<br>default value: <code>false</code>", + "type": [ + "boolean", + "null" + ] + }, + "url": { + "description": "<em>URL of the content to parse</em><br><strong>required field</strong><br>URL of the page to parse<br>example:<br>`https://dataforseo.com/blog/a-versatile-alternative-to-google-trends-exploring-the-power-of-dataforseo-trends-api`", + "type": "string" + } + }, + "type": "object" + } +] - removed
Input schema / properties / body / items / propertiesRemoved value: -{ - "id": { - "description": "ID of the task required field you can get this ID in the response of the Task POST endpoint note: the enable_content_parsing parameter in the POST request must be set to true example: \"07131248-1535-0216-1000-17384017ad04\"", - "type": "string" - }, - "markdown_view": { - "description": "return page content as markdown optional field if set to true, the markdown-formatted content of the page will be returned in the page_as_markdown field of the response; default value: false", - "type": "boolean" - }, - "url": { - "description": "URL of the content to parse required field URL of the page to parse example: https://dataforseo.com/blog/a-versatile-alternative-to-google-trends-exploring-the-power-of-dataforseo-trends-api", - "type": "string" - } -} - removed
Input schema / properties / body / items / requiredRemoved value: -[ - "url", - "id" -] - changed
Input schema / properties / body / items / typePrevious value: -"object"New value: +[ + "object", + "null" +] - changed
Input schema / requiredPrevious value: -[ - "body" -]New value: +[] - added
Output schema / x-fastmcp-wrap-resultAdded value: +true
- Changed
post_dataforseo_on_page_duplicate_content7 fields changed- added
Input schema / properties / body / exampleAdded value: +[ + { + "id": "07281559-0695-0216-0000-c269be8b7592", + "url": "https://www.etsy.com/" + } +] - added
Input schema / properties / body / items / anyOfAdded value: +[ + { + "example": [ + { + "id": "07281559-0695-0216-0000-c269be8b7592", + "url": "https://www.etsy.com/" + } + ], + "properties": { + "id": { + "description": "<em>ID of the task</em><br><strong>required field</strong><br>you can get this ID in the response of the <a href=\"https://docs.dataforseo.com/v3/on_page/task_post/\">Task POST</a> endpoint<br>example:<br>\"07131248-1535-0216-1000-17384017ad04\"", + "type": "string" + }, + "limit": { + "description": "<em>the maximum number of returned pages</em><br>optional field<br>default value: <code>100</code><br>maximum value: <code>1000</code>", + "type": [ + "integer", + "null" + ] + }, + "offset": { + "description": "<em>offset in the results array of returned pages</em><br>optional field<br>default value: <code>0</code><br>maximum value: <code>2000000</code><br>if you specify the <code>10</code> value, the first ten pages in the results array will be omitted and the data will be provided for the successive pages", + "type": [ + "integer", + "null" + ] + }, + "similarity": { + "description": "<em>content similarity score</em><br>by default, the content is considered duplicate if the value is greater than or equals <code>6</code><br>you can specify any similarity score in the 0-to-10 range", + "type": [ + "integer", + "null" + ] + }, + "tag": { + "description": "<em>user-defined task identifier</em><br>optional field<br><em>the character limit is 255</em><br>you can use this parameter to identify the task and match it with the result<br>you will find the specified <code>tag</code> value in the <code>data</code> object of the response", + "type": [ + "string", + "null" + ] + }, + "url": { + "description": "<em>page URL</em><br><strong>required field</strong><br>specify the initial page you want to receive duplicate content for", + "type": "string" + } + }, + "type": "object" + } +] - removed
Input schema / properties / body / items / propertiesRemoved value: -{ - "id": { - "description": "ID of the task required field you can get this ID in the response of the Task POST endpoint example: “07131248-1535-0216-1000-17384017ad04”", - "type": "string" - }, - "limit": { - "description": "the maximum number of returned pages optional field default value: 100 maximum value: 1000", - "type": "integer" - }, - "offset": { - "description": "offset in the results array of returned pages optional field default value: 0 maximum value: 2000000 if 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", - "type": "integer" - }, - "similarity": { - "description": "content similarity score by default, the content is considered duplicate if the value is greater than or equals 6 you can specify any similarity score in the 0-to-10 range", - "type": "integer" - }, - "tag": { - "description": "user-defined task identifier optional field the character limit is 255 you can use this parameter to identify the task and match it with the result you will find the specified tag value in the data object of the response", - "type": "string" - }, - "url": { - "description": "page URL required field specify the initial page you want to receive duplicate content for", - "type": "string" - } -} - removed
Input schema / properties / body / items / requiredRemoved value: -[ - "id", - "url" -] - changed
Input schema / properties / body / items / typePrevious value: -"object"New value: +[ + "object", + "null" +] - changed
Input schema / requiredPrevious value: -[ - "body" -]New value: +[] - added
Output schema / x-fastmcp-wrap-resultAdded value: +true
- Changed
post_dataforseo_on_page_duplicate_tags7 fields changed- added
Input schema / properties / body / exampleAdded value: +[ + { + "id": "07281559-0695-0216-0000-c269be8b7592", + "limit": 10, + "type": "duplicate_description" + } +] - added
Input schema / properties / body / items / anyOfAdded value: +[ + { + "example": [ + { + "id": "07281559-0695-0216-0000-c269be8b7592", + "limit": 10, + "type": "duplicate_description" + } + ], + "properties": { + "accumulator": { + "description": "<em>tag value</em><br>optional field<br>specify a title or description here if you want to receive a list of duplicate pages that contains this tag", + "type": [ + "string", + "null" + ] + }, + "id": { + "description": "<em>ID of the task</em><br><strong>required field</strong><br>you can get this ID in the response of the <a href=\"https://docs.dataforseo.com/v3/on_page/task_post/\">Task POST</a> endpoint<br>example:<br>\"07131248-1535-0216-1000-17384017ad04\"", + "type": "string" + }, + "limit": { + "description": "<em>the maximum number of returned pages</em><br>optional field<br>default value: <code>100</code><br>maximum value: <code>1000</code>", + "type": [ + "integer", + "null" + ] + }, + "offset": { + "description": "<em>offset in the results array of returned pages</em><br>optional field<br>default value: <code>0</code><br>maximum value: <code>2000000</code><br>if you specify the <code>10</code> value, the first ten pages in the results array will be omitted and the data will be provided for the successive pages", + "type": [ + "integer", + "null" + ] + }, + "tag": { + "description": "<em>user-defined task identifier</em><br>optional field<br><em>the character limit is 255</em><br>you can use this parameter to identify the task and match it with the result<br>you will find the specified <code>tag</code> value in the <code>data</code> object of the response", + "type": [ + "string", + "null" + ] + }, + "type": { + "description": "type of element", + "type": "string" + } + }, + "type": "object" + } +] - removed
Input schema / properties / body / items / propertiesRemoved value: -{ - "accumulator": { - "description": "tag value optional field specify a title or description here if you want to receive a list of duplicate pages that contains this tag", - "type": "string" - }, - "id": { - "description": "ID of the task required field you can get this ID in the response of the Task POST endpoint example: “07131248-1535-0216-1000-17384017ad04”", - "type": "string" - }, - "limit": { - "description": "the maximum number of returned pages optional field default value: 100 maximum value: 1000", - "type": "integer" - }, - "offset": { - "description": "offset in the results array of returned pages optional field default value: 0 maximum value: 2000000 if 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", - "type": "integer" - }, - "tag": { - "description": "user-defined task identifier optional field the character limit is 255 you can use this parameter to identify the task and match it with the result you will find the specified tag value in the data object of the response", - "type": "string" - }, - "type": { - "description": "type of element", - "enum": [ - "duplicate_title", - "duplicate_description" - ], - "type": "string" - } -} - removed
Input schema / properties / body / items / requiredRemoved value: -[ - "id", - "type" -] - changed
Input schema / properties / body / items / typePrevious value: -"object"New value: +[ + "object", + "null" +] - changed
Input schema / requiredPrevious value: -[ - "body" -]New value: +[] - added
Output schema / x-fastmcp-wrap-resultAdded value: +true
- Changed
post_dataforseo_on_page_force_stop7 fields changed- added
Input schema / properties / body / exampleAdded value: +[ + { + "id": "08121600-1535-0216-0000-37b4c7a34453" + }, + { + "id": "08121600-1535-0216-0000-d6a5000b6897" + } +] - added
Input schema / properties / body / items / anyOfAdded value: +[ + { + "example": [ + { + "id": "08121600-1535-0216-0000-37b4c7a34453" + }, + { + "id": "08121600-1535-0216-0000-d6a5000b6897" + } + ], + "properties": { + "id": { + "description": "<em>ID of the task</em><br><strong>required field</strong><br>you can get this ID in the response of the <a href=\"/v3/on_page/task_post/\">Task POST</a> endpoint<br>example:<br>\"07131248-1535-0216-1000-17384017ad04\"<p><strong>note</strong>: you can set up to 1000 <code>id</code> values as separate objects in the POST array", + "type": "string" + } + }, + "type": "object" + } +] - removed
Input schema / properties / body / items / propertiesRemoved value: -{ - "id": { - "description": "ID of the task required field you can get this ID in the response of the Task POST endpoint example: “07131248-1535-0216-1000-17384017ad04” note: you can set up to 1000 id values as separate objects in the POST array", - "type": "string" - } -} - removed
Input schema / properties / body / items / requiredRemoved value: -[ - "id" -] - changed
Input schema / properties / body / items / typePrevious value: -"object"New value: +[ + "object", + "null" +] - changed
Input schema / requiredPrevious value: -[ - "body" -]New value: +[] - added
Output schema / x-fastmcp-wrap-resultAdded value: +true
- Changed
post_dataforseo_on_page_keyword_density7 fields changed- added
Input schema / properties / body / exampleAdded value: +[ + { + "filters": [ + "frequency", + ">", + 5 + ], + "id": "09101923-1535-0216-0000-2389a8854b70", + "keyword_length": 2, + "url": "https://dataforseo.com/" + } +] - added
Input schema / properties / body / items / anyOfAdded value: +[ + { + "example": [ + { + "filters": [ + "frequency", + ">", + 5 + ], + "id": "09101923-1535-0216-0000-2389a8854b70", + "keyword_length": 2, + "url": "https://dataforseo.com/" + } + ], + "properties": { + "filters": { + "description": "<em>array of results filtering parameters</em><br>optional field<br><strong>you can add several filters at once (8 filters maximum)</strong><br>you should set a logical operator <code>and</code>, <code>or</code> between the conditions<br>the following operators are supported:<br><code>regex</code>, <code>not_regex</code>, <code>=</code>, <code><></code>, <code>in</code>, <code>not_in</code>, <code>like</code>, <code>not_like</code><br>you can use the <code>%</code> operator with <code>like</code> and <code>not_like</code> to match any string of zero or more characters<br>example:<br><code>[\"keyword\",\"=\",\"%seo%\"]</code><p><code>[[\"keyword\",\"=\",\"%seo%\"],<br>\"and\",<br>[\"frequency\",\"<\",\"6\"]]</code><p><code>[[\"keyword\",\"not_like\",\"%seo%\"],<br>\"and\",<br>[[\"frequency\",\">\",\"6\"],\"or\",[\"density\",\">\",\"0.02\"]]]</code><p>The full list of possible filters is available <a href=\"/v3/on_page/filters_and_thresholds/?bash\" target=\"_blank\" rel=\"noopener noreferrer\">by this link.</a>", + "items": { + "type": [ + "object", + "null" + ] + }, + "type": [ + "array", + "null" + ] + }, + "id": { + "description": "<em>ID of the task</em><br><strong>required field</strong><br>you can get this ID in the response of the <a href=\"/v3/on_page/task_post/\">Task POST</a> endpoint<br>example:<br>\"07131248-1535-0216-1000-17384017ad04\"", + "type": "string" + }, + "keyword_length": { + "description": "<em>number of words for a keyword</em><br><strong>required field</strong><br>possible values:<br><code>1</code>, <code>2</code>, <code>3</code>, <code>4</code>, <code>5</code>", + "type": "integer" + }, + "limit": { + "description": "<em>the maximum number of returned keywords</em><br>optional field<br>default value: <code>100</code><br>maximum value: <code>1000</code>", + "type": [ + "integer", + "null" + ] + }, + "order_by": { + "description": "<em>results sorting rules</em><br>optional field<br>you can use the same values as in the <code>filters</code> array to sort the results<br>possible sorting types:<br><code>asc</code> - results will be sorted in the ascending order<br><code>desc</code> - results will be sorted in the descending order<br>you should use a comma to set up a sorting type<br>example:<br><code>[\"frequency,desc\"]</code><br><strong>note that you can set no more than three sorting rules in a single request</strong><br>you should use a comma to separate several sorting rules<br>example:<br><code>[\"keyword,asc\",\"frequency,desc\"]</code>", + "items": { + "type": "string" + }, + "type": [ + "array", + "null" + ] + }, + "tag": { + "description": "<em>user-defined task identifier</em><br>optional field<br><em>the character limit is 255</em><br>you can use this parameter to identify the task and match it with the result<br>you will find the specified <code>tag</code> value in the <code>data</code> object of the response", + "type": [ + "string", + "null" + ] + }, + "url": { + "description": "<em>page URL</em><br>optional field<br><strong>if you do not specify a page here, the results will be provided for the whole website</strong><br>if you use this field, the API response will contain only keywords from the specified page<br>a page should be specified with absolute URL (including <code>http://</code> or <code>https://</code>)", + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + } +] - removed
Input schema / properties / body / items / propertiesRemoved value: -{ - "filters": { - "description": "array of results filtering parameters optional field you can add several filters at once (8 filters maximum) you should set a logical operator and, or between the conditions the following operators are supported: regex, not_regex, =, <>, in, not_in, like, not_like you can use the % operator with like and not_like to match any string of zero or more characters example: [\"keyword\",\"=\",\"%seo%\"] [[\"keyword\",\"=\",\"%seo%\"], \"and\", [\"frequency\",\"<\",\"6\"]] [[\"keyword\",\"not_like\",\"%seo%\"], \"and\", [[\"frequency\",\">\",\"6\"],\"or\",[\"density\",\">\",\"0.02\"]]] The full list of possible filters is available by this link.", - "items": {}, - "type": "array" - }, - "id": { - "description": "ID of the task required field you can get this ID in the response of the Task POST endpoint example: “07131248-1535-0216-1000-17384017ad04”", - "type": "string" - }, - "keyword_length": { - "description": "number of words for a keyword required field possible values: 1, 2, 3, 4, 5", - "type": "integer" - }, - "limit": { - "description": "the maximum number of returned keywords optional field default value: 100 maximum value: 1000", - "type": "integer" - }, - "order_by": { - "description": "results sorting rules optional field you can use the same values as in the filters array to sort the results possible sorting types: asc – results will be sorted in the ascending order desc – results will be sorted in the descending order you should use a comma to set up a sorting type example: [\"frequency,desc\"] note that you can set no more than three sorting rules in a single request you should use a comma to separate several sorting rules example: [\"keyword,asc\",\"frequency,desc\"]", - "items": { - "type": "string" - }, - "type": "array" - }, - "tag": { - "description": "user-defined task identifier optional field the character limit is 255 you can use this parameter to identify the task and match it with the result you will find the specified tag value in the data object of the response", - "type": "string" - }, - "url": { - "description": "page URL optional field if you do not specify a page here, the results will be provided for the whole website if you use this field, the API response will contain only keywords from the specified page a page should be specified with absolute URL (including http:// or https://)", - "type": "string" - } -} - removed
Input schema / properties / body / items / requiredRemoved value: -[ - "id", - "keyword_length" -] - changed
Input schema / properties / body / items / typePrevious value: -"object"New value: +[ + "object", + "null" +] - changed
Input schema / requiredPrevious value: -[ - "body" -]New value: +[] - added
Output schema / x-fastmcp-wrap-resultAdded value: +true
- Changed
post_dataforseo_on_page_lighthouse_live_json7 fields changed- added
Input schema / properties / body / exampleAdded value: +[ + { + "for_mobile": true, + "tag": "some_string_123", + "url": "https://dataforseo.com" + } +] - added
Input schema / properties / body / items / anyOfAdded value: +[ + { + "example": [ + { + "for_mobile": true, + "tag": "some_string_123", + "url": "https://dataforseo.com" + } + ], + "properties": { + "audits": { + "description": "<em>Lighthouse audits</em><br>optional field<br>audits are individual tests Lighthouse runs for each specific feature/optimization/metric to produce a numeric score (<a href=\"https://github.com/GoogleChrome/lighthouse/blob/master/docs/architecture.md#components--terminology\" rel=\"noopener noreferrer\" target=\"_blank\">see official definition</a>); <p><strong>if you ignore this field, we will return data for all audits</strong>;<br>use this field to get data for specific audits you indicate here;<p><strong>Note:</strong> that some audits do not belong to a specific category and are stand-alone page quality measurements;<p>in general, there can be several use cases:<p>1. if you ignore <code>categories</code>, you can use this field to get data for the specified audits only<br>for example, if you ignore <code>\"categories\"</code> and specify <code>\"audits\": [\"metrics/cumulative-layout-shift\",\"metrics/largest-contentful-paint\",\"metrics/total-blocking-time\"]</code>, you will get data only for these audits<p>2. if you specify a category, you can use this field to additionally receive audits that do not belong to the category(-ies) you specified<br>for example, if you specify <code>\"categories\": [\"seo\"]</code> and <code>\"audits\": [\"metrics/cumulative-layout-shift\",\"metrics/largest-contentful-paint\",\"metrics/total-blocking-time\"]</code>, you will get only these audits under \"performance\" and all audits under \"seo\"<p>you can get <a href=\"/v3/on_page/lighthouse/audits/\">the full list of possible audits here</a>", + "items": { + "type": "string" + }, + "type": [ + "array", + "null" + ] + }, + "browser_cpu_throttling_multiplier": { + "description": "<em>browser CPU throttling multiplier</em><br><strong>required if <code>browser_network_throttling_method</code> is set to <code>devtools</code>;</strong><br>set the CPU throttling multiplier to simulate device performance conditions during the Lighthouse audit;<br>can be specified within the following range: <code>1–4</code>;<br><strong>Note:</strong> this parameter is applied only when <code>browser_network_throttling_method</code> is set to <code>devtools</code>;", + "type": [ + "number", + "null" + ] + }, + "browser_network_throttling": { + "description": "<em>browser network throttling</em><br><strong>required if <code>browser_network_throttling_method</code> is set to <code>devtools</code>;</strong><br>set the network throttling profile to simulate connection speed conditions during the Lighthouse audit;<br>possible values: <code>no_throttling</code>, <code>fast_4g</code>, <code>slow_4g</code>, <code>regular_3g</code>, <code>pc</code>;<br><strong>Note:</strong> this parameter is applied only when <code>browser_network_throttling_method</code> is set to <code>devtools</code>;", + "type": [ + "string", + "null" + ] + }, + "browser_network_throttling_method": { + "description": "<em>browser network throttling method</em><br>optional field<br>defines the method used to apply throttling during the Lighthouse audit;<br>possible vaules:<br><code>simulate</code> - calculates estimated performance metrics without applying explicit throttling;<br><code>devtools</code> - applies the throttling settings specified in <code>browser_network_throttling</code> and <code>browser_cpu_throttling_multiplier</code>;<br><code>provided</code> - uses the network conditions of the crawling environment;", + "type": [ + "string", + "null" + ] + }, + "browser_screen_height": { + "description": "<em>browser screen height</em><br>optional field<br>set the screen height of the browser used for the Lighthouse audit to emulate a specific device;<br>can be specified within the following range: <code>240–9999</code>;", + "type": [ + "integer", + "null" + ] + }, + "browser_screen_scale_factor": { + "description": "<em>browser screen scale factor</em><br>optional field<br>set the device pixel ratio of the browser used for the Lighthouse audit;<br>can be specified within the following range: <code>0.5–3</code>;", + "type": [ + "number", + "null" + ] + }, + "browser_screen_width": { + "description": "<em>browser screen width</em><br>optional field<br>set the screen width of the browser used for the Lighthouse audit to emulate a specific device;<br>can be specified within the following range: <code>240–9999</code>;", + "format": "int64", + "type": [ + "integer", + "null" + ] + }, + "categories": { + "description": "<em>categories of Lighthouse audits</em><br>optional field<br>each category is a collection of audits and audit groups that applies weighting and scoring to the section (<a href=\"https://github.com/GoogleChrome/lighthouse/blob/master/docs/architecture.md#auditreport-terminology\" rel=\"noopener noreferrer\" target=\"_blank\">see official definition</a>)<p><strong>if you ignore this field, we will return data for all categories unless you specify <code>audits</code></strong><br>use this field to get data for specific categories you indicate here<p>possible values:<br><code>seo</code>, <code>performance</code>, <code>best_practices</code>, <code>accessibility</code>", + "items": { + "type": "string" + }, + "type": [ + "array", + "null" + ] + }, + "custom_user_agent": { + "description": "<em>custom user agent</em><br>optional field<br>specify the custom user agent used by the browser when running the Lighthouse audit;<br>can be specified with up to 254 characters;", + "type": [ + "string", + "null" + ] + }, + "for_mobile": { + "description": "<em>applies mobile emulation</em><br>optional field<br>if set to <code>true</code>, Lighthouse will use mobile device and screen emulation to test the page against mobile environment<br>if set to <code>false</code>, the results will be provided for desktop<br>default value: <code>false</code>", + "type": [ + "boolean", + "null" + ] + }, + "language_code": { + "description": "<em>lighthouse language code</em><br>optional field<br>you can receive the list of available languages of the search engine with their <code>language_code</code> by making a separate request to <code>https://api.dataforseo.com/v3/on_page/lighthouse/languages</code><br>default value:<br><code class=\"long-string\">en</code>", + "type": [ + "string", + "null" + ] + }, + "language_name": { + "description": "<em>lighthouse language name</em><br>optional field<br>you can receive the list of available languages of the search engine with their <code>language_name</code> by making a separate request to <code>https://api.dataforseo.com/v3/on_page/lighthouse/languages</code><br>default value:<br><code class=\"long-string\">English</code>", + "type": [ + "string", + "null" + ] + }, + "tag": { + "description": "<em>user-defined task identifier</em><br>optional field<br><em>the character limit is 255</em><br>you can use this parameter to identify the task and match it with the result<br>you will find the specified <code>tag</code> value in the <code>data</code> object of the response", + "type": [ + "string", + "null" + ] + }, + "url": { + "description": "<em>target URL</em><br><strong>required field</strong><br>target page should be specified with its absolute URL (including http:// or https://)<br>example:<br><code>https://dataforseo.com/</code>", + "type": "string" + }, + "version": { + "description": "<em>lighthouse version</em><br>optional field<br>you can obtain the results specific to a certain Lighthouse version by specifying its number<br>the list of available versions is available through the <a href=\"/v3/on_page/lighthouse/versions/\" rel=\"noopener noreferrer\" target=\"_blank\">Lighthouse Versions endpoint</a>", + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + } +] - removed
Input schema / properties / body / items / propertiesRemoved value: -{ - "audits": { - "description": "Lighthouse audits optional field audits are individual tests Lighthouse runs for each specific feature/optimization/metric to produce a numeric score (see official definition); if you ignore this field, we will return data for all audits; use this field to get data for specific audits you indicate here; Note: that some audits do not belong to a specific category and are stand-alone page quality measurements; in general, there can be several use cases: 1. if you ignore categories, you can use this field to get data for the specified audits only for example, if you ignore \"categories\" and specify \"audits\": [\"metrics/cumulative-layout-shift\",\"metrics/largest-contentful-paint\",\"metrics/total-blocking-time\"], you will get data only for these audits 2. if you specify a category, you can use this field to additionally receive audits that do not belong to the category(-ies) you specified for example, if you specify \"categories\": [\"seo\"] and \"audits\": [\"metrics/cumulative-layout-shift\",\"metrics/largest-contentful-paint\",\"metrics/total-blocking-time\"], you will get only these audits under “performance” and all audits under “seo” you can get the full list of possible audits here", - "items": { - "type": "string" - }, - "type": "array" - }, - "categories": { - "description": "categories of Lighthouse audits optional field each category is a collection of audits and audit groups that applies weighting and scoring to the section (see official definition) if you ignore this field, we will return data for all categories unless you specify audits use this field to get data for specific categories you indicate here possible values: seo, performance, best_practices, accessibility", - "items": { - "type": "string" - }, - "type": "array" - }, - "for_mobile": { - "description": "applies mobile emulation optional field if set to true, Lighthouse will use mobile device and screen emulation to test the page against mobile environment if set to false, the results will be provided for desktop default value: false", - "type": "boolean" - }, - "language_code": { - "description": "lighthouse language code optional field you can receive the list of available languages of the search engine with their language_code by making a separate request to https://api.dataforseo.com/v3/on_page/lighthouse/languages default value: en", - "type": "string" - }, - "language_name": { - "description": "lighthouse language name optional field you can receive the list of available languages of the search engine with their language_name by making a separate request to https://api.dataforseo.com/v3/on_page/lighthouse/languages default value: English", - "type": "string" - }, - "tag": { - "description": "user-defined task identifier optional field the character limit is 255 you can use this parameter to identify the task and match it with the result you will find the specified tag value in the data object of the response", - "type": "string" - }, - "url": { - "description": "target URL required field target page should be specified with its absolute URL (including http:// or https://) example: https://dataforseo.com/", - "type": "string" - }, - "version": { - "description": "lighthouse version optional field you can obtain the results specific to a certain Lighthouse version by specifying its number the list of available versions is available through the Lighthouse Versions endpoint", - "type": "string" - } -} - removed
Input schema / properties / body / items / requiredRemoved value: -[ - "url" -] - changed
Input schema / properties / body / items / typePrevious value: -"object"New value: +[ + "object", + "null" +] - changed
Input schema / requiredPrevious value: -[ - "body" -]New value: +[] - added
Output schema / x-fastmcp-wrap-resultAdded value: +true
- Changed
post_dataforseo_on_page_links7 fields changed- added
Input schema / properties / body / exampleAdded value: +[ + { + "filters": [ + [ + "dofollow", + "=", + true + ], + "and", + [ + "direction", + "=", + "external" + ] + ], + "id": "07281559-0695-0216-0000-c269be8b7592", + "limit": 10, + "page_from": "/apis/google-trends-api" + } +] - added
Input schema / properties / body / items / anyOfAdded value: +[ + { + "example": [ + { + "filters": [ + [ + "dofollow", + "=", + true + ], + "and", + [ + "direction", + "=", + "external" + ] + ], + "id": "07281559-0695-0216-0000-c269be8b7592", + "limit": 10, + "page_from": "/apis/google-trends-api" + } + ], + "properties": { + "filters": { + "description": "<em>array of results filtering parameters</em><br>optional field<br><strong>you can add several filters at once (8 filters maximum)</strong><br>you should set a logical operator <code>and</code>, <code>or</code> between the conditions<br>the following operators are supported:<br><code>regex</code>, <code>not_regex</code>, <code>=</code>, <code><></code>, <code>in</code>, <code>not_in</code>, <code>like</code>, <code>not_like</code><br>you can use the <code>%</code> operator with <code>like</code> and <code>not_like</code> to match any string of zero or more characters<br>example:<br><code>[\"direction\",\"=\",\"external\"]</code><p><code>[[\"domain_to\",\"<>\",\"example.com\"],<br>\"and\",<br>[\"link_from\",\"not_like\",\"%example.com/blog%\"]]</code><p><code>[[\"direction\",\"=\",\"external\"],<br>\"and\",<br>[[\"link_from\",\"like\",\"%example.com/blog%\"],\"or\",[\"link_from\",\"like\",\"%example.com/help%\"]]]</code><p>The full list of possible filters is available <a href=\"/v3/on_page/filters_and_thresholds/?bash\" rel=\"noopener noreferrer\" target=\"_blank\">by this link.</a>", + "items": { + "type": [ + "object", + "null" + ] + }, + "type": [ + "array", + "null" + ] + }, + "id": { + "description": "<em>ID of the task</em><br><strong>required field</strong><br>you can get this ID in the response of the <a href=\"https://docs.dataforseo.com/v3/on_page/task_post/\">Task POST</a> endpoint<br>example:<br>\"07131248-1535-0216-1000-17384017ad04\"", + "type": "string" + }, + "limit": { + "description": "<em>the maximum number of returned links</em><br>optional field<br>default value: <code>100</code><br>maximum value: <code>1000</code>", + "type": [ + "integer", + "null" + ] + }, + "offset": { + "description": "<em>offset in the results array of returned links</em><br>optional field<br>default value: <code>0</code><br>maximum value: <code>2000000</code><br>if you specify the <code>10</code> value, the first ten links in the results array will be omitted and the data will be provided for the successive links", + "type": [ + "integer", + "null" + ] + }, + "page_from": { + "description": "<em>relative page URL</em><br>optional field<br>if you use this field, the API response will contain only links from the specified page<br>note that in this field you can specify relative URLs only", + "type": [ + "string", + "null" + ] + }, + "page_to": { + "description": "<em>relative page URL</em><br>optional field<br>if you use this field, the API response will contain only internal links pointing to the specified page<br>note that in this field you can specify relative URLs only", + "type": [ + "string", + "null" + ] + }, + "search_after_token": { + "description": "<em>token for subsequent requests</em><br>optional field<br>provided in the identical filed of the response to each request;<br>use this parameter to avoid timeouts while trying to obtain over <code>20,000</code> results in a single request;<br>by specifying the unique <code>search_after_token</code> value from the response array, you will get the subsequent results of the initial task;<br><code>search_after_token</code> values are unique for each subsequent task ;<br><strong>Note:</strong> if the <code>search_after_token</code> is specified in the request, all other parameters should be identical to the previous request", + "type": [ + "string", + "null" + ] + }, + "tag": { + "description": "<em>user-defined task identifier</em><br>optional field<br><em>the character limit is 255</em><br>you can use this parameter to identify the task and match it with the result<br>you will find the specified <code>tag</code> value in the <code>data</code> object of the response", + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + } +] - removed
Input schema / properties / body / items / propertiesRemoved value: -{ - "filters": { - "description": "array of results filtering parameters optional field you can add several filters at once (8 filters maximum) you should set a logical operator and, or between the conditions the following operators are supported: regex, not_regex, =, , in, not_in, like, not_like you can use the % operator with like and not_like to match any string of zero or more characters example: [\"direction\",\"=\",\"external\"] [[\"domain_to\",\"\",\"example.com\"], \"and\", [\"link_from\",\"not_like\",\"%example.com/blog%\"]] [[\"direction\",\"=\",\"external\"], \"and\", [[\"link_from\",\"like\",\"%example.com/blog%\"],\"or\",[\"link_from\",\"like\",\"%example.com/help%\"]]] The full list of possible filters is available by this link.", - "items": {}, - "type": "array" - }, - "id": { - "description": "ID of the task required field you can get this ID in the response of the Task POST endpoint example: “07131248-1535-0216-1000-17384017ad04”", - "type": "string" - }, - "limit": { - "description": "the maximum number of returned links optional field default value: 100 maximum value: 1000", - "type": "integer" - }, - "offset": { - "description": "offset in the results array of returned links optional field default value: 0 maximum value: 2000000 if you specify the 10 value, the first ten links in the results array will be omitted and the data will be provided for the successive links", - "type": "integer" - }, - "page_from": { - "description": "relative page URL optional field if you use this field, the API response will contain only links from the specified page note that in this field you can specify relative URLs only", - "type": "string" - }, - "page_to": { - "description": "relative page URL optional field if you use this field, the API response will contain only internal links pointing to the specified page note that in this field you can specify relative URLs only", - "type": "string" - }, - "search_after_token": { - "description": "token for subsequent requests optional field provided 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", - "type": "string" - }, - "tag": { - "description": "user-defined task identifier optional field the character limit is 255 you can use this parameter to identify the task and match it with the result you will find the specified tag value in the data object of the response", - "type": "string" - } -} - removed
Input schema / properties / body / items / requiredRemoved value: -[ - "id" -] - changed
Input schema / properties / body / items / typePrevious value: -"object"New value: +[ + "object", + "null" +] - changed
Input schema / requiredPrevious value: -[ - "body" -]New value: +[] - added
Output schema / x-fastmcp-wrap-resultAdded value: +true
- Changed
post_dataforseo_on_page_microdata7 fields changed- added
Input schema / properties / body / exampleAdded value: +[ + { + "id": "02241700-1535-0216-0000-034137259bc1", + "url": "https://dataforseo.com/apis" + } +] - added
Input schema / properties / body / items / anyOfAdded value: +[ + { + "example": [ + { + "id": "02241700-1535-0216-0000-034137259bc1", + "url": "https://dataforseo.com/apis" + } + ], + "properties": { + "id": { + "description": "<em>ID of the task</em><br><strong>required field</strong><br>you can get this ID in the response of the <a href=\"/v3/on_page/task_post/\">Task POST</a> endpoint<br>example:<br><code>\"07131248-1535-0216-1000-17384017ad04\"</code>", + "type": "string" + }, + "tag": { + "description": "<em>user-defined task identifier</em><br>optional field<br><em>the character limit is 255</em><br>you can use this parameter to identify the task and match it with the result<br>you will find the specified <code>tag</code> value in the <code>data</code> object of the response", + "type": [ + "string", + "null" + ] + }, + "url": { + "description": "<em>resource URL</em><br><strong>required field</strong><br>you can get this URL in the response of the <a href=\"/v3/on_page/pages/\">Pages</a> endpoint<br>example:<br><code>https://dataforseo.com/apis</code>", + "type": "string" + } + }, + "type": "object" + } +] - removed
Input schema / properties / body / items / propertiesRemoved value: -{ - "id": { - "description": "ID of the task required field you can get this ID in the response of the Task POST endpoint example: \"07131248-1535-0216-1000-17384017ad04\"", - "type": "string" - }, - "tag": { - "description": "user-defined task identifier optional field the character limit is 255 you can use this parameter to identify the task and match it with the result you will find the specified tag value in the data object of the response", - "type": "string" - }, - "url": { - "description": "resource URL required field you can get this URL in the response of the Pages endpoint example: https://dataforseo.com/apis", - "type": "string" - } -} - removed
Input schema / properties / body / items / requiredRemoved value: -[ - "id", - "url" -] - changed
Input schema / properties / body / items / typePrevious value: -"object"New value: +[ + "object", + "null" +] - changed
Input schema / requiredPrevious value: -[ - "body" -]New value: +[] - added
Output schema / x-fastmcp-wrap-resultAdded value: +true
- Changed
post_dataforseo_on_page_non_indexable7 fields changed- added
Input schema / properties / body / exampleAdded value: +[ + { + "filters": [ + [ + "reason", + "=", + "robots_txt" + ], + "and", + [ + "url", + "like", + "%go%" + ] + ], + "id": "07281559-0695-0216-0000-c269be8b7592", + "limit": 10 + } +] - added
Input schema / properties / body / items / anyOfAdded value: +[ + { + "example": [ + { + "filters": [ + [ + "reason", + "=", + "robots_txt" + ], + "and", + [ + "url", + "like", + "%go%" + ] + ], + "id": "07281559-0695-0216-0000-c269be8b7592", + "limit": 10 + } + ], + "properties": { + "filters": { + "description": "<em>array of results filtering parameters</em><br>optional field<br><strong>you can add several filters at once (8 filters maximum)</strong><br>you should set a logical operator <code>and</code>, <code>or</code> between the conditions<br>the following operators are supported:<br><code>regex</code>, <code>not_regex</code>, <code><</code>, <code><=</code>, <code>></code>, <code>>=</code>, <code>=</code>, <code><></code>, <code>in</code>, <code>not_in</code>, <code>like</code>, <code>not_like</code><br>you can use the <code>%</code> operator with <code>like</code> and <code>not_like</code> to match any string of zero or more characters<br>example:<br><code>[[\"reason\",\"<>\",\"robots_txt\"],<br>\"and\",<br>[\"url\",\"not_like\",\"%/wp-admin/%\"]]</code><p><code>[[\"url\",\"not_like\",\"%/wp-admin/%\"],<br>\"and\",<br>[[\"reason\",\"<>\",\"meta_tag\"],\"or\",[\"reason\",\"<>\",\"http_header\"]]]</code><p>The full list of possible filters is available <a href=\"/v3/on_page/filters_and_thresholds/?bash\" target=\"_blank\" rel=\"noopener noreferrer\">by this link.</a>", + "items": { + "type": [ + "object", + "null" + ] + }, + "type": [ + "array", + "null" + ] + }, + "id": { + "description": "<em>ID of the task</em><br><strong>required field</strong><br>you can get this ID in the response of the <a href=\"/v3/on_page/task_post/\">Task POST</a> endpoint<br>example:<br>\"07131248-1535-0216-1000-17384017ad04\"", + "type": "string" + }, + "limit": { + "description": "<em>the maximum number of returned pages</em><br>optional field<br>default value: <code>100</code><br>maximum value: <code>1000</code>", + "type": [ + "integer", + "null" + ] + }, + "offset": { + "description": "<em>offset in the results array of returned pages</em><br>optional field<br>default value: <code>0</code><br>maximum value: <code>2000000</code><br>if you specify the <code>10</code> value, the first ten pages in the results array will be omitted and the data will be provided for the successive pages", + "type": [ + "integer", + "null" + ] + } + }, + "type": "object" + } +] - removed
Input schema / properties / body / items / propertiesRemoved value: -{ - "filters": { - "description": "array of results filtering parameters optional field you can add several filters at once (8 filters maximum) you should set a logical operator and, or between the conditions the following operators are supported: regex, not_regex, <, <=, >, >=, =, <>, in, not_in, like, not_like you can use the % operator with like and not_like to match any string of zero or more characters example: [[\"reason\",\"<>\",\"robots_txt\"], \"and\", [\"url\",\"not_like\",\"%/wp-admin/%\"]] [[\"url\",\"not_like\",\"%/wp-admin/%\"], \"and\", [[\"reason\",\"<>\",\"meta_tag\"],\"or\",[\"reason\",\"<>\",\"http_header\"]]] The full list of possible filters is available by this link.", - "items": {}, - "type": "array" - }, - "id": { - "description": "ID of the task required field you can get this ID in the response of the Task POST endpoint example: “07131248-1535-0216-1000-17384017ad04”", - "type": "string" - }, - "limit": { - "description": "the maximum number of returned pages optional field default value: 100 maximum value: 1000", - "type": "integer" - }, - "offset": { - "description": "offset in the results array of returned pages optional field default value: 0 maximum value: 2000000 if 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", - "type": "integer" - } -} - removed
Input schema / properties / body / items / requiredRemoved value: -[ - "id" -] - changed
Input schema / properties / body / items / typePrevious value: -"object"New value: +[ + "object", + "null" +] - changed
Input schema / requiredPrevious value: -[ - "body" -]New value: +[] - added
Output schema / x-fastmcp-wrap-resultAdded value: +true
- Removed
post_dataforseo_on_page_page_screenshot - Changed
post_dataforseo_on_page_raw_html7 fields changed- added
Input schema / properties / body / exampleAdded value: +[ + { + "id": "07281559-0695-0216-0000-c269be8b7592", + "url": "https://dataforseo.com/apis" + } +] - added
Input schema / properties / body / items / anyOfAdded value: +[ + { + "example": [ + { + "id": "07281559-0695-0216-0000-c269be8b7592", + "url": "https://dataforseo.com/apis" + } + ], + "properties": { + "id": { + "description": "<em>ID of the task</em><br><strong>required field</strong><br>you can get this ID in the response of the <a href=\"/v3/on_page/task_post/\">Task POST</a> endpoint<br>example:<br>\"07131248-1535-0216-1000-17384017ad04\"", + "type": "string" + }, + "url": { + "description": "<em>page url</em><br><strong>required field</strong><br>the absolute URL of a page to request HTML<br><strong>Note:</strong> this field is optional if the task was set using the <a href=\"/v3/on_page/instant_pages/\">Instant Pages endpoint</a>", + "type": "string" + } + }, + "type": "object" + } +] - removed
Input schema / properties / body / items / propertiesRemoved value: -{ - "id": { - "description": "ID of the task required field you can get this ID in the response of the Task POST endpoint example: “07131248-1535-0216-1000-17384017ad04”", - "type": "string" - }, - "url": { - "description": "page url required field the absolute URL of a page to request HTML Note: this field is optional if the task was set using the Instant Pages endpoint", - "type": "string" - } -} - removed
Input schema / properties / body / items / requiredRemoved value: -[ - "id" -] - changed
Input schema / properties / body / items / typePrevious value: -"object"New value: +[ + "object", + "null" +] - changed
Input schema / requiredPrevious value: -[ - "body" -]New value: +[] - added
Output schema / x-fastmcp-wrap-resultAdded value: +true
- Changed
post_dataforseo_on_page_resources7 fields changed- added
Input schema / properties / body / exampleAdded value: +[ + { + "filters": [ + [ + "resource_type", + "=", + "image" + ], + "and", + [ + "size", + ">", + 100000 + ] + ], + "id": "07281559-0695-0216-0000-c269be8b7592", + "limit": 10, + "order_by": [ + "size,desc" + ] + } +] - added
Input schema / properties / body / items / anyOfAdded value: +[ + { + "example": [ + { + "filters": [ + [ + "resource_type", + "=", + "image" + ], + "and", + [ + "size", + ">", + 100000 + ] + ], + "id": "07281559-0695-0216-0000-c269be8b7592", + "limit": 10, + "order_by": [ + "size,desc" + ] + } + ], + "properties": { + "filters": { + "description": "<em>array of results filtering parameters</em><br>optional field<br><strong>you can add several filters at once (8 filters maximum)</strong><br>you should set a logical operator <code>and</code>, <code>or</code> between the conditions<br>the following operators are supported:<br><code>regex</code>, <code>not_regex</code>, <code><</code>, <code><=</code>, <code>></code>, <code>>=</code>, <code>=</code>, <code><></code>, <code>in</code>, <code>not_in</code>, <code>like</code>, <code>not_like</code><br>you can use the <code>%</code> operator with <code>like</code> and <code>not_like</code> to match any string of zero or more characters<br>example:<br><code>[\"resource_type\",\"=\",\"stylesheet\"]</code><p><code>[[\"resource_type\",\"=\",\"image\"],<br>\"and\",[\"checks.is_https\",\"=\",false]]</code><p><code>[[\"fetch_timing.duration_time\",\">\",1],\"and\",[[\"total_transfer_size\",\">\",100],\"or\",[\"checks.high_loading_time\",\"=\",true]]]</code><p>The full list of possible filters is available <a href=\"/v3/on_page/filters_and_thresholds/?bash\" rel=\"noopener noreferrer\" target=\"_blank\">by this link.</a>", + "items": { + "type": [ + "object", + "null" + ] + }, + "type": [ + "array", + "null" + ] + }, + "id": { + "description": "<em>ID of the task</em><br><strong>required field</strong><br>you can get this ID in the response of the <a href=\"/v3/on_page/task_post/\">Task POST</a> endpoint<br>example:<br>\"07131248-1535-0216-1000-17384017ad04\"", + "type": "string" + }, + "limit": { + "description": "<em>the maximum number of returned resources</em><br>optional field<br>default value: <code>100</code><br>maximum value: <code>1000</code>", + "type": [ + "integer", + "null" + ] + }, + "offset": { + "description": "<em>offset in the results array of returned resources</em><br>optional field<br>default value: <code>0</code><br>maximum value: <code>2000000</code><br>if you specify the <code>10</code> value, the first ten resources in the results array will be omitted and the data will be provided for the successive resources", + "type": [ + "integer", + "null" + ] + }, + "order_by": { + "description": "<em>results sorting rules</em><br>optional field<br>you can use the same values as in the <code>filters</code> array to sort the results<br>possible sorting types:<br><code>asc</code> - results will be sorted in the ascending order<br><code>desc</code> - results will be sorted in the descending order<br>you should use a comma to set up a sorting type<br>example:<br><code>[\"size,desc\"]</code><br><strong>note that you can set no more than three sorting rules in a single request</strong><br>you should use a comma to separate several sorting rules<br>example:<br><code>[\"size,desc\",\"fetch_timing.fetch_end,desc\"]</code>", + "items": { + "type": "string" + }, + "type": [ + "array", + "null" + ] + }, + "relevant_pages_filters": { + "description": "<em>filter the resources by relevant pages</em><br>optional field<br>you can use this field to obtain resources from pages matching to the defined parameters<br>you can apply the same filters here as available for the <a href=\"/v3/on_page/pages/\" rel=\"noopener noreferrer\" target=\"_blank\">pages endpoint</a><br><strong>you can add several filters at once (8 filters maximum)</strong><br>you should set a logical operator <code>and</code>, <code>or</code> between the conditions<br>the following operators are supported:<br><code>regex</code>, <code>not_regex</code>, <code><</code>, <code><=</code>, <code>></code>, <code>>=</code>, <code>=</code>, <code><></code>, <code>in</code>, <code>not_in</code>, <code>like</code>, <code>not_like</code><br>you can use the <code>%</code> operator with <code>like</code> and <code>not_like</code> to match any string of zero or more characters<br>example:<br><code>[\"checks.no_image_title\",\"=\",true]</code>", + "items": { + "type": "string" + }, + "type": [ + "array", + "null" + ] + }, + "search_after_token": { + "description": "<em>token for subsequent requests</em><br>optional field<br>provided in the identical filed of the response to each request;<br>use this parameter to avoid timeouts while trying to obtain over <code>20,000</code> results in a single request;<br>by specifying the unique <code>search_after_token</code> value from the response array, you will get the subsequent results of the initial task;<br><code>search_after_token</code> values are unique for each subsequent task ;<br><strong>Note:</strong> if the <code>search_after_token</code> is specified in the request, all other parameters should be identical to the previous request", + "type": [ + "string", + "null" + ] + }, + "tag": { + "description": "<em>user-defined task identifier</em><br>optional field<br><em>the character limit is 255</em><br>you can use this parameter to identify the task and match it with the result<br>you will find the specified <code>tag</code> value in the <code>data</code> object of the response", + "type": [ + "string", + "null" + ] + }, + "url": { + "description": "<em>page URL</em><br>optional field<br>specify this field if you want to get the resources for a specific page<br>note that to obtain resource's <code>meta</code> from a particular URL, you should specify the URL in this field;<br>if you do not indicate a <code>url</code> when setting a task, resource's <code>meta</code> in the results will be returned based on the data from the page where our crawler first saw the resource", + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + } +] - removed
Input schema / properties / body / items / propertiesRemoved value: -{ - "filters": { - "description": "array of results filtering parameters optional field you can add several filters at once (8 filters maximum) you should set a logical operator and, or between the conditions the following operators are supported: regex, not_regex, , , >, >=, =, , in, not_in, like, not_like you can use the % operator with like and not_like to match any string of zero or more characters example: [\"resource_type\",\"=\",\"stylesheet\"] [[\"resource_type\",\"=\",\"image\"], \"and\",[\"checks.is_https\",\"=\",false]] [[\"fetch_timing.duration_time\",\">\",1],\"and\",[[\"total_transfer_size\",\">\",100],\"or\",[\"checks.high_loading_time\",\"=\",true]]] The full list of possible filters is available by this link.", - "items": {}, - "type": "array" - }, - "id": { - "description": "ID of the task required field you can get this ID in the response of the Task POST endpoint example: “07131248-1535-0216-1000-17384017ad04”", - "type": "string" - }, - "limit": { - "description": "the maximum number of returned resources optional field default value: 100 maximum value: 1000", - "type": "integer" - }, - "offset": { - "description": "offset in the results array of returned resources optional field default value: 0 maximum value: 2000000 if you specify the 10 value, the first ten resources in the results array will be omitted and the data will be provided for the successive resources", - "type": "integer" - }, - "order_by": { - "description": "results sorting rules optional field you can use the same values as in the filters array to sort the results possible sorting types: asc – results will be sorted in the ascending order desc – results will be sorted in the descending order you should use a comma to set up a sorting type example: [\"size,desc\"] note that you can set no more than three sorting rules in a single request you should use a comma to separate several sorting rules example: [\"size,desc\",\"fetch_timing.fetch_end,desc\"]", - "items": { - "type": "string" - }, - "type": "array" - }, - "relevant_pages_filters": { - "description": "filter the resources by relevant pages optional field you can use this field to obtain resources from pages matching to the defined parameters you can apply the same filters here as available for the pages endpoint you can add several filters at once (8 filters maximum) you should set a logical operator and, or between the conditions the following operators are supported: regex, not_regex, , , >, >=, =, , in, not_in, like, not_like you can use the % operator with like and not_like to match any string of zero or more characters example: [\"checks.no_image_title\",\"=\",true]", - "items": {}, - "type": "array" - }, - "search_after_token": { - "description": "token for subsequent requests optional field provided 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", - "type": "string" - }, - "tag": { - "description": "user-defined task identifier optional field the character limit is 255 you can use this parameter to identify the task and match it with the result you will find the specified tag value in the data object of the response", - "type": "string" - }, - "url": { - "description": "page URL optional field specify this field if you want to get the resources for a specific page note that to obtain resource’s meta from a particular URL, you should specify the URL in this field; if you do not indicate a url when setting a task, resource’s meta in the results will be returned based on the data from the page where our crawler first saw the resource", - "type": "string" - } -} - removed
Input schema / properties / body / items / requiredRemoved value: -[ - "id" -] - changed
Input schema / properties / body / items / typePrevious value: -"object"New value: +[ + "object", + "null" +] - changed
Input schema / requiredPrevious value: -[ - "body" -]New value: +[] - added
Output schema / x-fastmcp-wrap-resultAdded value: +true
- Changed
post_dataforseo_on_page_submit7 fields changed- added
Input schema / properties / body / exampleAdded value: +[ + { + "custom_js": "meta = {}; meta.url = document.URL; meta;", + "enable_javascript": true, + "load_resources": true, + "max_crawl_pages": 10, + "pingback_url": "https://your-server.com/pingscript?id=$id&tag=$tag", + "tag": "some_string_123", + "target": "dataforseo.com" + } +] - added
Input schema / properties / body / items / anyOfAdded value: +[ + { + "example": [ + { + "custom_js": "meta = {}; meta.url = document.URL; meta;", + "enable_javascript": true, + "load_resources": true, + "max_crawl_pages": 10, + "pingback_url": "https://your-server.com/pingscript?id=$id&tag=$tag", + "tag": "some_string_123", + "target": "dataforseo.com" + } + ], + "properties": { + "accept_language": { + "description": "<em>language header for accessing the website</em><br>optional field<br>all locale formats are supported (xx, xx-XX, xxx-XX, etc.)<br><strong>Note:</strong> if you do not specify this parameter, some websites may deny access; in this case, pages will be returned with the <code>\"type\":\"broken</code> in the response array", + "type": [ + "string", + "null" + ] + }, + "allow_subdomains": { + "description": "<em>include pages on subdomains</em><br>optional field<br>set to <code>true</code> if you want to crawl all subdomains of a target website<br>default value: <code>false</code>", + "type": [ + "boolean", + "null" + ] + }, + "allowed_subdomains": { + "description": "<em>subdomains to crawl</em><br>optional field<br>specify subdomains that you want to crawl<br>example: <code>[\"blog.site.com\", \"my.site.com\", \"shop.site.com\"]</code><br><strong>Note:</strong> to use this parameter, the <code>allow_subdomains</code> parameter should be set to <code>false</code>;<br>otherwise, the content of <code>allowed_subdomains</code> field will be ignored and the results will be returned for all subdomains", + "items": { + "type": "string" + }, + "type": [ + "array", + "null" + ] + }, + "browser_preset": { + "description": "<em>preset for browser screen parameters</em><br>optional field<br>if you use this field, you don't need to indicate <code>browser_screen_width</code>, <code>browser_screen_height</code>, <code>browser_screen_scale_factor</code>possible values:<br><code>desktop</code>, <code>mobile</code>, <code>tablet</code><code>desktop</code> preset will apply the following values:<code>browser_screen_width: 1920</code><br><code>browser_screen_height: 1080</code><br><code>browser_screen_scale_factor: 1</code><code>mobile</code> preset will apply the following values:<code>browser_screen_width: 390</code><br><code>browser_screen_height: 844</code><br><code>browser_screen_scale_factor: 3</code><code>tablet</code> preset will apply the following values:<code>browser_screen_width: 1024</code><br><code>browser_screen_height: 1366</code><br><code>browser_screen_scale_factor: 2</code><br><strong>Note:</strong> to use this parameter, set <code>enable_javascript</code> or <code>enable_browser_rendering</code> to <code>true</code>", + "type": [ + "string", + "null" + ] + }, + "browser_screen_height": { + "description": "<em>browser screen height</em><br>optional field<br>you can set a custom browser screen height to perform an audit for a particular device;<br>if you use this field, you don't need to indicate <code>browser_preset</code> as it will be ignored;<br><strong>Note:</strong> to use this parameter, set <code>enable_javascript</code> or <code>enable_browser_rendering</code> to <code>true</code>minimum value, in pixels: <code>240</code><br>maximum value, in pixels: <code>9999</code>", + "type": [ + "integer", + "null" + ] + }, + "browser_screen_scale_factor": { + "description": "<em>browser screen scale factor</em><br>optional field<br>you can set a custom browser screen resolution ratio to perform audit for a particular device;<br>if you use this field, you don't need to indicate <code>browser_preset</code> as it will be ignored;<br><strong>Note:</strong> to use this parameter, set <code>enable_javascript</code> or <code>enable_browser_rendering</code> to <code>true</code>minimum value: <code>0.5</code><br>maximum value: <code>3</code>", + "type": [ + "number", + "null" + ] + }, + "browser_screen_width": { + "description": "<em>browser screen width</em><br>optional field<br>you can set a custom browser screen width to perform audit for a particular device;<br>if you use this field, you don't need to indicate <code>browser_preset</code> as it will be ignored;<br><strong>Note:</strong> to use this parameter, set <code>enable_javascript</code> or <code>enable_browser_rendering</code> to <code>true</code>minimum value, in pixels: <code>240</code><br>maximum value, in pixels: <code>9999</code>", + "format": "int64", + "type": [ + "integer", + "null" + ] + }, + "calculate_keyword_density": { + "description": "<em>calculate keyword density for the target domain</em><br>optional field<br>set to <code>true</code> if you want to calculate keyword density for website pages<br>default value: <code>false</code><br><strong>Note:</strong> if you use this parameter, additional charges will apply; learn more about the cost of tasks with this parameter <a href=\"https://dataforseo.com/help-center/cost-of-onpage-api-parameters\" target=\"_blank\" rel=\"noopener noreferrer\">in our help article</a><br>once the crawl is completed, you can obtain keyword density values with <a href=\"/v3/on_page/keyword_density?bash\" target=\"_blank\" rel=\"noopener noreferrer\">the Keyword Density endpoint</a>", + "type": [ + "boolean", + "null" + ] + }, + "check_spell": { + "description": "<em>check spelling</em><br>optional field<br>set to <code>true</code> to check spelling on a website using <a href=\"http://hunspell.github.io/\" target=\"_blank\" rel=\"noopener noreferrer\">Hunspell</a> library<br>default value: <code>false</code>", + "type": [ + "boolean", + "null" + ] + }, + "check_spell_exceptions": { + "description": "<em>words excluded from spell check</em><br>optional field<br>specify the words that you want to exclude from spell check<br>maximum word length: 100 characters<br>maximum amount of words: 1000<br>example: <code>\"SERP\", \"minifiers\", \"JavaScript\"</code>", + "items": { + "type": "string" + }, + "type": [ + "array", + "null" + ] + }, + "check_spell_language": { + "description": "<em>language of the spell check</em><br>optional field<br>supported languages: 'hy', 'eu', 'bg', 'ca', 'hr', 'cs', 'da', 'nl', 'en', 'eo', 'et', 'fo', 'fa', 'fr', 'fy', 'gl', 'ka', 'de', 'el', 'he', 'hu', 'is', 'ia', 'ga', 'it', 'rw', 'la', 'lv', 'lt', 'mk', 'mn', 'ne', 'nb', 'nn', 'pl', 'pt', 'ro', 'gd', 'sr', 'sk', 'sl', 'es', 'sv', 'tr', 'tk', 'uk', 'vi'<br><strong>Note:</strong> if no language is specified, it will be set automatically based on page content", + "type": [ + "string", + "null" + ] + }, + "checks_threshold": { + "additionalProperties": { + "format": "int64", + "type": [ + "integer", + "null" + ] + }, + "description": "<em>custom threshold values for checks</em><br>optional field<br>you can specify custom threshold values for the parameters included in the <code>checks</code> object of OnPage API responses;<br><strong>Note:</strong> only integer threshold values can be modified;<br>for example, the <code>high_loading_time</code> and <code>large_page_size</code> parameters are set to 3 seconds and 1 megabyte respectively by default;<br>if you want to change these thresholds to 1 second and 1000 kbytes, use the following snippet:<br>`\"checks_threshold\": {<br>\"high_loading_time\": 1,<br>\"large_page_size\": 1000<br>}`<br>available customizable parameters with default values:<br>`\"title_too_short\", default value: 30, type: \"int\"<br>\"title_too_long\", default value: 65, type: \"int\"<br>\"small_page_size\", default value: 1024, type: \"int\"<br>\"large_page_size\", default value: 1048576 (1024 * 1024), type: \"int\"<br>\"low_character_count\", default value: 1024, type: \"int\"<br>\"high_character_count\", default value: 256000 (250 * 1024), type: \"int\"<br>\"low_content_rate\", default value: 0.1, type: \"float\"<br>\"high_content_rate\", default value: 0.9, type: \"float\"<br>\"high_loading_time\", default value: 3000, type: \"int\"<br>\"high_waiting_time\", default value: 1500, type: \"int\"<br>\"low_readability_rate\", default value: 15.0, type: \"float\"<br>\"irrelevant_description\", default value: 0.2, type: \"float\"<br>\"irrelevant_title\", default value: 0.3, type: \"float\"<br>\"irrelevant_meta_keywords\", default value: 0.6, type: \"float\"`", + "type": [ + "object", + "null" + ] + }, + "crawl_delay": { + "description": "<em>delay between hits, ms</em><br>optional field<br>the custom delay between crawler hits to the server<br>default value: <code>2000</code>", + "type": [ + "integer", + "null" + ] + }, + "crawl_sitemap_only": { + "description": "<em>crawl only pages indicated in the sitemap</em><br>optional field<br>set to <code>true</code> if you want to crawl only the pages indicated in the sitemap<br>if you set this parameter to <code>true</code> and do not specify <code>custom_sitemap</code>, we will crawl the default sitemap<br>default value: <code>false</code><br><strong>Note:</strong> if you want to use this parameter, <code>respect_sitemap</code> should be <code>true</code>", + "type": [ + "boolean", + "null" + ] + }, + "custom_js": { + "description": "<em>custom javascript</em><br>optional field<br><strong>Note</strong> that the execution time for the script you enter here should be 700 ms maximum, for example, you can use the following JS snippet to check if the website contains Google Tag Manager as a <code>scr</code> attribute:<br><code>let meta = { haveGoogleAnalytics: false, haveTagManager: false };rnfor (var i = 0; i < document.scripts.length; i++) {rn let src = document.scripts[i].getAttribute(\"src\");rn if (src != undefined) {rn if (src.indexOf(\"analytics.js\") >= 0)rn meta.haveGoogleAnalytics = true;rntif (src.indexOf(\"gtm.js\") >= 0)rn meta.haveTagManager = true;rn }rn}rnmeta;</code>the returned value depends on what you specified in this field. For instance, if you specify the following script:<br>`meta = {}; meta.url = document.URL; meta.test = 'test'; meta;`<br>as a response you will receive the following data:<br>`\"custom_js_response\": {<br>\"url\": \"https://dataforseo.com/\",<br>\"test\": \"test\"<br>}`<br><strong>Note:</strong> the length of the script you enter must be no more than 2000 characters", + "type": [ + "string", + "null" + ] + }, + "custom_robots_txt": { + "description": "<em>custom robots.txt settings</em><br>optional field<br>example: <code>Disallow: /directory1/</code>", + "type": [ + "string", + "null" + ] + }, + "custom_sitemap": { + "description": "<em>custom sitemap url</em><br>optional field<br>the URL of the page where the alternative sitemap is located<br><strong>Note:</strong> if you want to use this parameter, <code>respect_sitemap</code> should be <code>true</code>", + "type": [ + "string", + "null" + ] + }, + "custom_user_agent": { + "description": "<em>custom user agent</em><br>optional field<br>custom user agent for crawling a website<br>example: <code>Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36<br></code><br>default value: <code>Mozilla/5.0 (compatible; RSiteAuditor)</code>", + "type": [ + "string", + "null" + ] + }, + "disable_cookie_popup": { + "description": "<em>disable the cookie popup</em><br>optional field<br>set to <code>true</code> if you want to disable the popup requesting cookie consent from the user;<br>default value:<br><code>false</code>", + "type": [ + "boolean", + "null" + ] + }, + "disable_page_checks": { + "description": "<em>prevent certain page checks from running</em><br>optional field<br>specify certain <code>checks</code> to prevent them from running and impacting the <code>onpage_score</code>example:<br><code>\"disable_page_checks\": [\"is_5xx_code\", \"is_4xx_code\"]</code>", + "items": { + "type": "string" + }, + "type": [ + "array", + "null" + ] + }, + "disable_sitewide_checks": { + "description": "<em>prevent certain sitewide checks from running</em><br>optional field<br>specify the following <code>checks</code> to prevent them from running on the <code>target</code> website:<br><code>\"test_page_not_found\"</code><br><code>\"test_canonicalization\"</code><br><code>\"test_https_redirect\"</code><br><code>\"test_directory_browsing\"</code>example:<br><code>\"disable_sitewide_checks\": [\"test_directory_browsing\", \"test_page_not_found\"]</code>learn more on <a href=\"https://dataforseo.com/help-center/how-to-disable-sitewide-checks-in-onpage-api\" target=\"_blank\" rel=\"noopener noreferrer\">our help center</a>", + "items": { + "type": "string" + }, + "type": [ + "array", + "null" + ] + }, + "disallowed_subdomains": { + "description": "<em>subdomains not to crawl</em><br>optional field<br>specify subdomains that you don't want to crawl<br>example: <code>[\"status.site.com\", \"docs.site.com\"]</code><br><strong>Note:</strong> to use this parameter, the <code>allow_subdomains</code> parameter should be set to <code>true</code>", + "items": { + "type": "string" + }, + "type": [ + "array", + "null" + ] + }, + "enable_browser_rendering": { + "description": "<em>emulate browser rendering to measure Core Web Vitals</em><br>optional field<br>by using this parameter you will be able to emulate a browser when loading a web page;<br><code>enable_browser_rendering</code> loads styles, images, fonts, animations, videos, and other resources on a page;<br>default value: <code>false</code><br>set to <code>true</code> to obtain Core Web Vitals (FID, CLS, LCP) metrics in the response;<br><strong>if you use this field, <code>enable_javascript</code>, and <code>load_resources</code> parameters must be set to <code>true</code></strong><br><strong>Note:</strong> if you use this parameter, additional charges will apply; learn more about the cost of tasks with this parameter <a href=\"https://dataforseo.com/help-center/cost-of-onpage-api-parameters\" target=\"_blank\" rel=\"noopener noreferrer\">in our help article</a>; the cost can be calculated on the <a href=\"https://dataforseo.com/pricing/on-page/onpage-api\" target=\"_blank\" rel=\"noopener noreferrer\">Pricing Page</a>", + "type": [ + "boolean", + "null" + ] + }, + "enable_content_parsing": { + "description": "<em>parse content on crawled pages</em><br>optional field<br>set to <code>true</code> to use the <a href=\"/v3/on_page/content_parsing/live/\" target=\"_blank\" rel=\"noopener noreferrer\">OnPage Content Parsing endpoint</a><br>default value: <code>false</code>", + "type": [ + "boolean", + "null" + ] + }, + "enable_javascript": { + "description": "<em>load javascript on a page</em><br>optional field<br>set to <code>true</code> if you want to load the scripts available on a page<br>default value: <code>false</code><br><strong>Note:</strong> if you use this parameter, additional charges will apply; learn more about the cost of tasks with this parameter <a href=\"https://dataforseo.com/help-center/cost-of-onpage-api-parameters\" target=\"_blank\" rel=\"noopener noreferrer\">in our help article</a>; the cost can be calculated on the <a href=\"https://dataforseo.com/pricing/on-page/onpage-api\" target=\"_blank\" rel=\"noopener noreferrer\">Pricing Page</a>", + "type": [ + "boolean", + "null" + ] + }, + "enable_www_redirect_check": { + "description": "<em>check if the domain implemented the www redirection</em><br>optional field<br>set to <code>true</code> if you want to check if the requested domain implemented the www to non-www or non-www to www redirect;<br>default value: <code>false</code>", + "type": [ + "boolean", + "null" + ] + }, + "enable_xhr": { + "description": "<em>enable XMLHttpRequest on a page</em><br>optional field<br>set to <code>true</code> if you want our crawler to request data from a web server using the XMLHttpRequest object<br>default value: <code>false</code>;if you use this field, <code>enable_javascript</code> must be set to <code>true</code>;", + "type": [ + "boolean", + "null" + ] + }, + "force_sitewide_checks": { + "description": "<em>enable sitewide checks when crawling a single page</em><br>optional field<br>set to <code>true</code> to get data on sitewide checks when crawling a single page;<br>default value: <code>false</code>", + "type": [ + "boolean", + "null" + ] + }, + "load_resources": { + "description": "<em>load resources</em><br>optional field<br>set to <code>true</code> if you want to load image, stylesheets, scripts, and broken resources<br>default value: <code>false</code><br><strong>Note:</strong> if you use this parameter, additional charges will apply; learn more about the cost of tasks with this parameter <a href=\"https://dataforseo.com/help-center/cost-of-onpage-api-parameters\" target=\"_blank\" rel=\"noopener noreferrer\">in our help article</a>; the cost can be calculated on the <a href=\"https://dataforseo.com/pricing/on-page/onpage-api\" target=\"_blank\" rel=\"noopener noreferrer\">Pricing Page</a>", + "type": [ + "boolean", + "null" + ] + }, + "max_crawl_depth": { + "description": "<em>crawl depth</em><br>optional field<br>the linking depth of the pages to crawl;<br>for example, starting page of the crawl is level 0, pages that have links from that page are level 1, etc.", + "type": [ + "integer", + "null" + ] + }, + "max_crawl_pages": { + "description": "<em>crawled pages limit</em><br><strong>required field</strong><br>the number of pages to crawl on the specified domain<br><strong>Note:</strong><br>if you set <code>max_crawl_pages</code> to 1 and do not specify <code>start_url</code> or set a homepage in it, the following sitewide checks will be disabled:<br><code>test_canonicalization</code>, <code>enable_www_redirect_check</code>, <code>test_hidden_server_signature</code>, <code>test_page_not_found</code>, <code>test_directory_browsing</code>, <code>test_https_redirect</code><br>to enable them anyway, set <code>force_sitewide_checks</code> to <code>true</code>if you set <code>max_crawl_pages</code> to 1 and specify <code>start_url</code> other than a homepage, all sitewide checks will be disabled;<br>to enable them anyway, set <code>force_sitewide_checks</code> to <code>true</code>", + "type": "integer" + }, + "pingback_url": { + "description": "<em>notification URL of a completed task</em><br>optional field<br>when a task is completed we will notify you by GET request sent to the URL you have specified<br>you can use the ‘$id’ string as a <code>$id</code> variable and ‘$tag’ as urlencoded <code>$tag</code> variable. We will set the necessary values before sending the request.<br>example:<br><code>http://your-server.com/pingscript?id=$id</code><br><code>http://your-server.com/pingscript?id=$id&tag=$tag</code><br><strong>Note:</strong> special characters in <code>pingback_url</code> will be urlencoded;<br>i.a., the <code>#</code> character will be encoded into <code>%23</code><p>learn more on our <a href=\"https://dataforseo.com/help-center/pingbacks-postbacks-with-dataforseo-api\" target=\"_blank\" rel=\"noopener noreferrer\">Help Center</a>", + "type": [ + "string", + "null" + ] + }, + "priority_urls": { + "description": "<em>urls to be crawled bypassing the queue</em><br>optional field<br>URLs specified in this array will be crawled in the first instance, bypassing the crawling queue;<br><strong>Note:</strong> you should specify the absolute URL;<br>you can specify up to <strong>20 URLs</strong>;<br>all URLs in the array must belong to the <code>target</code> domain;<br>subdomains will be ignored unless the <code>allow_subdomains</code> parameter is set to <code>true</code>example:<br>`\"priority_urls\": [<br>\"https://dataforseo.com/apis/serp-api\",<br>\"https://dataforseo.com/contact\"<br>]`", + "items": { + "type": "string" + }, + "type": [ + "array", + "null" + ] + }, + "respect_sitemap": { + "description": "<em>respect sitemap when crawling</em><br>optional field<br>set to <code>true</code> if you want to follow the order of pages indicated in the primary sitemap when crawling;<br>default value: <code>false</code><br><strong>Note:</strong> if set to <code>true</code>, the <code>click_depth</code> value in the API response will equal <code>0</code>;<br>the <code>max_crawl_depth</code> field of the request will be ignored, you can specify the number of pages to crawl using the <code>max_crawl_pages</code> parameter", + "type": [ + "boolean", + "null" + ] + }, + "return_despite_timeout": { + "description": "<em>return data on pages despite the timeout error</em><br>optional field<br>if <code>true</code>, the data will be provided on pages that failed to load within 120 seconds and responded with a timeout error;<br>default value: <code>false</code>", + "type": [ + "boolean", + "null" + ] + }, + "robots_txt_merge_mode": { + "description": "<em>merge with or override robots.txt settings</em><br>optional field<br>possible values: <code>merge</code>, <code>override</code>;<br>set to <code>override</code> if you want to ignore website crawling restrictions and other robots.txt settings<br>default value: <code>merge</code>;<br><strong>Note:</strong> if set to <code>override</code>, specify the <code>custom_robots_txt</code> parameter", + "type": [ + "string", + "null" + ] + }, + "start_url": { + "description": "<em>the first url to crawl </em><br>optional field<br><strong>Note:</strong> you should specify an absolute URL<br>if you want to crawl a single page, specify its URL in this field and additionally set the <code>max_crawl_pages</code> parameter to <code>1</code><br>you can also use the <a href=\"/v3/on_page/instant_pages/?bash\" target=\"_blank\" rel=\"noopener noreferrer\">live Instant Pages endpoint</a> to get page-specific data", + "type": [ + "string", + "null" + ] + }, + "store_raw_html": { + "description": "<em>store HTML of crawled pages</em><br>optional field<br>set to <code>true</code> if you want to get the HTML of the page using the <a href=\"/v3/on_page/raw_html/\" target=\"_blank\" rel=\"noopener noreferrer\">OnPage Raw HTML endpoint</a><br>default value: <code>false</code>", + "type": [ + "boolean", + "null" + ] + }, + "support_cookies": { + "description": "<em>support cookies on crawled pages</em><br>optional field<br>set to <code>true</code> to support cookies when crawling the pages<br>default value: <code>false</code>", + "type": [ + "boolean", + "null" + ] + }, + "switch_pool": { + "description": "<em>switch proxy pool</em><br>optional field<br>if <code>true</code>, additional proxy pools will be used to obtain the requested data;<br>the parameter can be used if a multitude of tasks is set simultaneously, resulting in occasional <code>rate-limit</code> and/or <code>site_unreachable</code> errors", + "type": [ + "boolean", + "null" + ] + }, + "tag": { + "description": "<em>user-defined task identifier</em><br>optional field<br><em>the character limit is 255</em><br>you can use this parameter to identify the task and match it with the result<br>you will find the specified <code>tag</code> value in the <code>data</code> object of the response", + "type": [ + "string", + "null" + ] + }, + "target": { + "description": "<em>target domain</em><br><strong>required field</strong><br>domain name should be specified without <code>https://</code> and <code>www.</code><br>if you specify the page URL, the results will be returned for the domain included in the URL", + "type": "string" + }, + "validate_micromarkup": { + "description": "<em>enable microdata validation</em><br>optional field<br>set to <code>true</code> if you want to use the <a href=\"/v3/on_page/microdata/\" target=\"_blank\" rel=\"noopener noreferrer\">OnPage API Microdata endpoint</a><br>default value: <code>false</code>", + "type": [ + "boolean", + "null" + ] + } + }, + "type": "object" + } +] - removed
Input schema / properties / body / items / propertiesRemoved value: -{ - "accept_language": { - "description": "language header for accessing the website optional field all locale formats are supported (xx, xx-XX, xxx-XX, etc.) Note: if you do not specify this parameter, some websites may deny access; in this case, pages will be returned with the \"type\":\"broken in the response array", - "type": "string" - }, - "allow_subdomains": { - "description": "include pages on subdomains optional field set to true if you want to crawl all subdomains of a target website default value: false", - "type": "boolean" - }, - "allowed_subdomains": { - "description": "subdomains to crawl optional field specify subdomains that you want to crawl example: [\"blog.site.com\", \"my.site.com\", \"shop.site.com\"] Note: to use this parameter, the allow_subdomains parameter should be set to false; otherwise, the content of allowed_subdomains field will be ignored and the results will be returned for all subdomains", - "items": { - "type": "string" - }, - "type": "array" - }, - "browser_preset": { - "description": "preset for browser screen parameters optional field if you use this field, you don’t need to indicate browser_screen_width, browser_screen_height, browser_screen_scale_factorpossible values: desktop, mobile, tabletdesktop preset will apply the following values:browser_screen_width: 1920 browser_screen_height: 1080 browser_screen_scale_factor: 1mobile preset will apply the following values:browser_screen_width: 390 browser_screen_height: 844 browser_screen_scale_factor: 3tablet preset will apply the following values:browser_screen_width: 1024 browser_screen_height: 1366 browser_screen_scale_factor: 2 Note: to use this parameter, set enable_javascript or enable_browser_rendering to true", - "type": "string" - }, - "browser_screen_height": { - "description": "browser screen height optional field you can set a custom browser screen height to perform an audit for a particular device; if you use this field, you don’t need to indicate browser_preset as it will be ignored; Note: to use this parameter, set enable_javascript or enable_browser_rendering to trueminimum value, in pixels: 240 maximum value, in pixels: 9999", - "type": "integer" - }, - "browser_screen_scale_factor": { - "description": "browser screen scale factor optional field you can set a custom browser screen resolution ratio to perform audit for a particular device; if you use this field, you don’t need to indicate browser_preset as it will be ignored; Note: to use this parameter, set enable_javascript or enable_browser_rendering to trueminimum value: 0.5 maximum value: 3", - "type": "number" - }, - "browser_screen_width": { - "description": "browser screen width optional field you can set a custom browser screen width to perform audit for a particular device; if you use this field, you don’t need to indicate browser_preset as it will be ignored; Note: to use this parameter, set enable_javascript or enable_browser_rendering to trueminimum value, in pixels: 240 maximum value, in pixels: 9999", - "type": "integer" - }, - "calculate_keyword_density": { - "description": "calculate keyword density for the target domain optional field set to true if you want to calculate keyword density for website pages default value: false Note: if you use this parameter, additional charges will apply; learn more about the cost of tasks with this parameter in our help article once the crawl is completed, you can obtain keyword density values with the Keyword Density endpoint", - "type": "boolean" - }, - "check_spell": { - "description": "check spelling optional field set to true to check spelling on a website using Hunspell library default value: false", - "type": "boolean" - }, - "check_spell_exceptions": { - "description": "words excluded from spell check optional field specify the words that you want to exclude from spell check maximum word length: 100 characters maximum amount of words: 1000 example: \"SERP\", \"minifiers\", \"JavaScript\"", - "items": { - "type": "string" - }, - "type": "array" - }, - "check_spell_language": { - "description": "language of the spell check optional field supported languages: ‘hy’, ‘eu’, ‘bg’, ‘ca’, ‘hr’, ‘cs’, ‘da’, ‘nl’, ‘en’, ‘eo’, ‘et’, ‘fo’, ‘fa’, ‘fr’, ‘fy’, ‘gl’, ‘ka’, ‘de’, ‘el’, ‘he’, ‘hu’, ‘is’, ‘ia’, ‘ga’, ‘it’, ‘rw’, ‘la’, ‘lv’, ‘lt’, ‘mk’, ‘mn’, ‘ne’, ‘nb’, ‘nn’, ‘pl’, ‘pt’, ‘ro’, ‘gd’, ‘sr’, ‘sk’, ‘sl’, ‘es’, ‘sv’, ‘tr’, ‘tk’, ‘uk’, ‘vi’ Note: if no language is specified, it will be set automatically based on page content", - "type": "string" - }, - "checks_threshold": { - "description": "custom threshold values for checks optional field you can specify custom threshold values for the parameters included in the checks object of OnPage API responses; Note: only integer threshold values can be modified; for example, the high_loading_time and large_page_size parameters are set to 3 seconds and 1 megabyte respectively by default; if you want to change these thresholds to 1 second and 1000 kbytes, use the following snippet: \"checks_threshold\": { \"high_loading_time\": 1, \"large_page_size\": 1000 }available customizable parameters with default values: \"title_too_short\", default value: 30, type: \"int\" \"title_too_long\", default value: 65, type: \"int\" \"small_page_size\", default value: 1024, type: \"int\" \"large_page_size\", default value: 1048576 (1024 * 1024), type: \"int\" \"low_character_count\", default value: 1024, type: \"int\" \"high_character_count\", default value: 256000 (250 * 1024), type: \"int\" \"low_content_rate\", default value: 0.1, type: \"float\" \"high_content_rate\", default value: 0.9, type: \"float\" \"high_loading_time\", default value: 3000, type: \"int\" \"high_waiting_time\", default value: 1500, type: \"int\" \"low_readability_rate\", default value: 15.0, type: \"float\" \"irrelevant_description\", default value: 0.2, type: \"float\" \"irrelevant_title\", default value: 0.3, type: \"float\" \"irrelevant_meta_keywords\", default value: 0.6, type: \"float\"", - "type": "object" - }, - "crawl_delay": { - "description": "delay between hits, ms optional field the custom delay between crawler hits to the server default value: 2000", - "type": "integer" - }, - "crawl_sitemap_only": { - "description": "crawl only pages indicated in the sitemap optional field set to true if you want to crawl only the pages indicated in the sitemap if you set this parameter to true and do not specify custom_sitemap, we will crawl the default sitemap default value: false Note: if you want to use this parameter, respect_sitemap should be true", - "type": "boolean" - }, - "custom_js": { - "description": "custom javascript optional field Note that the execution time for the script you enter here should be 700 ms maximum, for example, you can use the following JS snippet to check if the website contains Google Tag Manager as a scr attribute: let meta = { haveGoogleAnalytics: false, haveTagManager: false };rnfor (var i = 0; i < document.scripts.length; i++) {rn let src = document.scripts[i].getAttribute(\"src\");rn if (src!= undefined) {rn if (src.indexOf(\"analytics.js\") >= 0)rn meta.haveGoogleAnalytics = true;rntif (src.indexOf(\"gtm.js\") >= 0)rn meta.haveTagManager = true;rn }rn}rnmeta;the returned value depends on what you specified in this field. For instance, if you specify the following script: `meta = {}; meta.url = document.URL; meta.test = 'test'; meta;` as a response you will receive the following data: `\"custom_js_response\": { \"url\": \"https://dataforseo.com/\", \"test\": \"test\" }` Note: the length of the script you enter must be no more than 2000 characters", - "type": "string" - }, - "custom_robots_txt": { - "description": "custom robots.txt settings optional field example: Disallow: /directory1/", - "type": "string" - }, - "custom_sitemap": { - "description": "custom sitemap url optional field the URL of the page where the alternative sitemap is located Note: if you want to use this parameter, respect_sitemap should be true", - "type": "string" - }, - "custom_user_agent": { - "description": "custom user agent optional field custom user agent for crawling a website example: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36 default value: Mozilla/5.0 (compatible; RSiteAuditor)", - "type": "string" - }, - "disable_cookie_popup": { - "description": "disable the cookie popup optional field set to true if you want to disable the popup requesting cookie consent from the user; default value: false", - "type": "boolean" - }, - "disable_page_checks": { - "description": "prevent certain page checks from running optional field specify certain checks to prevent them from running and impacting the onpage_scoreexample: \"disable_page_checks\": [\"is_5xx_code\", \"is_4xx_code\"]", - "items": { - "type": "string" - }, - "type": "array" - }, - "disable_sitewide_checks": { - "description": "prevent certain sitewide checks from running optional field specify the following checks to prevent them from running on the target website: \"test_page_not_found\" \"test_canonicalization\" \"test_https_redirect\" \"test_directory_browsing\"example: \"disable_sitewide_checks\": [\"test_directory_browsing\", \"test_page_not_found\"]learn more on our help center", - "items": { - "type": "string" - }, - "type": "array" - }, - "disallowed_subdomains": { - "description": "subdomains not to crawl optional field specify subdomains that you don’t want to crawl example: [\"status.site.com\", \"docs.site.com\"] Note: to use this parameter, the allow_subdomains parameter should be set to true", - "items": { - "type": "string" - }, - "type": "array" - }, - "enable_browser_rendering": { - "description": "emulate browser rendering to measure Core Web Vitals optional field by using this parameter you will be able to emulate a browser when loading a web page; enable_browser_rendering loads styles, images, fonts, animations, videos, and other resources on a page; default value: false set to true to obtain Core Web Vitals (FID, CLS, LCP) metrics in the response; if you use this field, enable_javascript, and load_resources parameters must be set to true Note: if you use this parameter, additional charges will apply; learn more about the cost of tasks with this parameter in our help article", - "type": "boolean" - }, - "enable_content_parsing": { - "description": "parse content on crawled pages optional field set to true to use the OnPage Content Parsing endpoint default value: false", - "type": "boolean" - }, - "enable_javascript": { - "description": "load javascript on a page optional field set to true if you want to load the scripts available on a page default value: false Note: if you use this parameter, additional charges will apply; learn more about the cost of tasks with this parameter in our help article", - "type": "boolean" - }, - "enable_www_redirect_check": { - "description": "check if the domain implemented the www redirection optional field set to true if you want to check if the requested domain implemented the www to non-www or non-www to www redirect; default value: false", - "type": "boolean" - }, - "enable_xhr": { - "description": "enable XMLHttpRequest on a page optional field set to true if you want our crawler to request data from a web server using the XMLHttpRequest object default value: false;if you use this field, enable_javascript must be set to true;", - "type": "boolean" - }, - "force_sitewide_checks": { - "description": "enable sitewide checks when crawling a single page optional field set to true to get data on sitewide checks when crawling a single page; default value: false", - "type": "boolean" - }, - "load_resources": { - "description": "load resources optional field set to true if you want to load image, stylesheets, scripts, and broken resources default value: false Note: if you use this parameter, additional charges will apply; learn more about the cost of tasks with this parameter in our help article", - "type": "boolean" - }, - "max_crawl_depth": { - "description": "crawl depth optional field the linking depth of the pages to crawl; for example, starting page of the crawl is level 0, pages that have links from that page are level 1, etc.", - "type": "integer" - }, - "max_crawl_pages": { - "description": "crawled pages limit required field the number of pages to crawl on the specified domain Note: if you set max_crawl_pages to 1 and do not specify start_url or set a homepage in it, the following sitewide checks will be disabled: test_canonicalization, enable_www_redirect_check, test_hidden_server_signature, test_page_not_found, test_directory_browsing, test_https_redirect to enable them anyway, set force_sitewide_checks to trueif you set max_crawl_pages to 1 and specify start_url other than a homepage, all sitewide checks will be disabled; to enable them anyway, set force_sitewide_checks to true", - "type": "integer" - }, - "pingback_url": { - "description": "notification URL of a completed task optional field when a task is completed we will notify you by GET request sent to the URL you have specified you can use the ‘$id’ string as a $id variable and ‘$tag’ as urlencoded $tag variable. We will set the necessary values before sending the request. example: http://your-server.com/pingscript?id=$id http://your-server.com/pingscript?id=$id&tag=$tag Note: special characters in pingback_url will be urlencoded; i.a., the # character will be encoded into %23 learn more on our Help Center", - "type": "string" - }, - "priority_urls": { - "description": "urls to be crawled bypassing the queue optional field URLs specified in this array will be crawled in the first instance, bypassing the crawling queue; Note: you should specify the absolute URL; you can specify up to 20 URLs; all URLs in the array must belong to the target domain; subdomains will be ignored unless the allow_subdomains parameter is set to trueexample: \"priority_urls\": [ \"https://dataforseo.com/apis/serp-api\", \"https://dataforseo.com/contact\" ]", - "items": { - "type": "string" - }, - "type": "array" - }, - "respect_sitemap": { - "description": "respect sitemap when crawling optional field set to true if you want to follow the order of pages indicated in the primary sitemap when crawling; default value: false Note: if set to true, the click_depth value in the API response will equal 0; the max_crawl_depth field of the request will be ignored, you can specify the number of pages to crawl using the max_crawl_pages parameter", - "type": "boolean" - }, - "return_despite_timeout": { - "description": "return data on pages despite the timeout error optional field if true, the data will be provided on pages that failed to load within 120 seconds and responded with a timeout error; default value: false", - "type": "boolean" - }, - "robots_txt_merge_mode": { - "description": "merge with or override robots.txt settings optional field possible values: merge, override; set to override if you want to ignore website crawling restrictions and other robots.txt settings default value: merge; Note: if set to override, specify the custom_robots_txt parameter", - "type": "string" - }, - "start_url": { - "description": "the first url to crawl optional field Note: you should specify an absolute URL if you want to crawl a single page, specify its URL in this field and additionally set the max_crawl_pages parameter to 1 you can also use the live Instant Pages endpoint to get page-specific data", - "type": "string" - }, - "store_raw_html": { - "description": "store HTML of crawled pages optional field set to true if you want to get the HTML of the page using the OnPage Raw HTML endpoint default value: false", - "type": "boolean" - }, - "support_cookies": { - "description": "support cookies on crawled pages optional field set to true to support cookies when crawling the pages default value: false", - "type": "boolean" - }, - "switch_pool": { - "description": "switch proxy pool optional field if true, additional proxy pools will be used to obtain the requested data; the parameter can be used if a multitude of tasks is set simultaneously, resulting in occasional rate-limit and/or site_unreachable errors", - "type": "boolean" - }, - "tag": { - "description": "user-defined task identifier optional field the character limit is 255 you can use this parameter to identify the task and match it with the result you will find the specified tag value in the data object of the response", - "type": "string" - }, - "target": { - "description": "target domain required field domain name should be specified without https:// and www. if you specify the page URL, the results will be returned for the domain included in the URL", - "type": "string" - }, - "validate_micromarkup": { - "description": "enable microdata validation optional field set to true if you want to use the OnPage API Microdata endpoint default value: false", - "type": "boolean" - } -} - removed
Input schema / properties / body / items / requiredRemoved value: -[ - "target", - "max_crawl_pages" -] - changed
Input schema / properties / body / items / typePrevious value: -"object"New value: +[ + "object", + "null" +] - changed
Input schema / requiredPrevious value: -[ - "body" -]New value: +[] - added
Output schema / x-fastmcp-wrap-resultAdded value: +true
- Changed
post_dataforseo_on_page_uncrawlable_resources7 fields changed- added
Input schema / properties / body / exampleAdded value: +[ + { + "filters": [ + [ + "meta.content_type", + "=", + "image/jpeg" + ], + "and", + [ + "url", + "like", + "%go%" + ] + ], + "id": "07281559-0695-0216-0000-c269be8b7592", + "limit": 10 + } +] - added
Input schema / properties / body / items / anyOfAdded value: +[ + { + "example": [ + { + "filters": [ + [ + "meta.content_type", + "=", + "image/jpeg" + ], + "and", + [ + "url", + "like", + "%go%" + ] + ], + "id": "07281559-0695-0216-0000-c269be8b7592", + "limit": 10 + } + ], + "properties": { + "filters": { + "description": "<em>array of results filtering parameters</em><br>optional field<br><strong>you can add several filters at once (8 filters maximum)</strong><br>you should set a logical operator <code>and</code>, <code>or</code> between the conditions<br>the following operators are supported:<br><code>regex</code>, <code>not_regex</code>, <code><</code>, <code><=</code>, <code>></code>, <code>>=</code>, <code>=</code>, <code><></code>, <code>in</code>, <code>not_in</code>, <code>like</code>, <code>not_like</code><br>you can use the <code>%</code> operator with <code>like</code> and <code>not_like</code> to match any string of zero or more characters<br>example:<br><code> [[\"meta.content_type\",\"=\",\"image/jpeg\"],<br>\"and\",<br>[\"url\",\"not_like\",\"%/help-center/%\"]]</code><p>The full list of possible filters is available <a href=\"/v3/on_page/filters_and_thresholds/?bash\" target=\"_blank\" rel=\"noopener noreferrer\">by this link.</a>", + "items": { + "type": [ + "object", + "null" + ] + }, + "type": [ + "array", + "null" + ] + }, + "id": { + "description": "<em>ID of the task</em><br><strong>required field</strong><br>you can get this ID in the response of the <a href=\"/v3/on_page/task_post/\">Task POST</a> endpoint<br>example:<br>\"07131248-1535-0216-1000-17384017ad04\"", + "type": "string" + }, + "limit": { + "description": "<em>the maximum number of returned uncrawlable resources</em><br>optional field<br>default value: <code>100</code><br>maximum value: <code>1000</code>", + "type": [ + "integer", + "null" + ] + }, + "offset": { + "description": "<em>offset in the results array of returned uncrawlable resources</em><br>optional field<br>default value: <code>0</code><br> maximum value: <code>2000000</code><br>if you specify the <code>10</code> value, the first ten invalid resources in the results array will be omitted and the data will be provided for the successive invalid resources", + "type": [ + "integer", + "null" + ] + }, + "order_by": { + "description": "<em>results sorting rules</em><br>optional field<br>you can use the same values as in the <code>filters</code> array to sort the results<br>possible sorting types:<br><code>asc</code> - results will be sorted in the ascending order<br><code>desc</code> - results will be sorted in the descending order<br>you should use a comma to set up a sorting type<br>example:<br><code>[\"meta.content_type,desc\"]</code><br><strong>note that you can set no more than three sorting rules in a single request</strong><br>you should use a comma to separate several sorting rules<br>example:<br><code>[\"meta.content_type,asc\",\"fetch_time,desc\"]</code>", + "items": { + "type": "string" + }, + "type": [ + "array", + "null" + ] + } + }, + "type": "object" + } +] - removed
Input schema / properties / body / items / propertiesRemoved value: -{ - "filters": { - "description": "array of results filtering parameters optional field you can add several filters at once (8 filters maximum) you should set a logical operator and, or between the conditions the following operators are supported: regex, not_regex, , , >, >=, =, , in, not_in, like, not_like you can use the % operator with like and not_like to match any string of zero or more characters example: [[\"meta.content_type\",\"=\",\"image/jpeg\"], \"and\", [\"url\",\"not_like\",\"%/help-center/%\"]]The full list of possible filters is available by this link.", - "items": {}, - "type": "array" - }, - "id": { - "description": "ID of the task required field you can get this ID in the response of the Task POST endpoint example: \"07131248-1535-0216-1000-17384017ad04\"", - "type": "string" - }, - "limit": { - "description": "the maximum number of returned uncrawlable resources optional field default value: 100 maximum value: 1000", - "type": "integer" - }, - "offset": { - "description": "offset in the results array of returned uncrawlable resources optional field default value: 0 maximum value: 2000000 if you specify the 10 value, the first ten invalid resources in the results array will be omitted and the data will be provided for the successive invalid resources", - "type": "integer" - }, - "order_by": { - "description": "results sorting rules optional field you can use the same values as in the filters array to sort the results possible sorting types: asc - results will be sorted in the ascending order desc - results will be sorted in the descending order you should use a comma to set up a sorting type example: [\"meta.content_type,desc\"] note that you can set no more than three sorting rules in a single request you should use a comma to separate several sorting rules example: [\"meta.content_type,asc\",\"fetch_time,desc\"]", - "items": { - "type": "string" - }, - "type": "array" - } -} - removed
Input schema / properties / body / items / requiredRemoved value: -[ - "id" -] - changed
Input schema / properties / body / items / typePrevious value: -"object"New value: +[ + "object", + "null" +] - changed
Input schema / requiredPrevious value: -[ - "body" -]New value: +[] - added
Output schema / x-fastmcp-wrap-resultAdded value: +true
- Changed
post_dataforseo_on_page_waterfall7 fields changed- added
Input schema / properties / body / exampleAdded value: +[ + { + "id": "08101204-0696-0216-0000-644a7b21a48a", + "url": "https://dataforseo.com/tag/broken-links" + } +] - added
Input schema / properties / body / items / anyOfAdded value: +[ + { + "example": [ + { + "id": "08101204-0696-0216-0000-644a7b21a48a", + "url": "https://dataforseo.com/tag/broken-links" + } + ], + "properties": { + "id": { + "description": "<em>ID of the task</em><br><strong>required field</strong><br>you can get this ID in the response of the <a href=\"/v3/on_page/task_post/\">Task POST</a> endpoint<br>example:<br>\"07131248-1535-0216-1000-17384017ad04\"", + "type": "string" + }, + "tag": { + "description": "<em>user-defined task identifier</em><br>optional field<br><em>the character limit is 255</em><br>you can use this parameter to identify the task and match it with the result<br>you will find the specified <code>tag</code> value in the <code>data</code> object of the response", + "type": [ + "string", + "null" + ] + }, + "url": { + "description": "<em>page URL</em><br><strong>required field</strong><br>specify the pages you want to receive timing for", + "type": "string" + } + }, + "type": "object" + } +] - removed
Input schema / properties / body / items / propertiesRemoved value: -{ - "id": { - "description": "ID of the task required field you can get this ID in the response of the Task POST endpoint example: “07131248-1535-0216-1000-17384017ad04”", - "type": "string" - }, - "tag": { - "description": "user-defined task identifier optional field the character limit is 255 you can use this parameter to identify the task and match it with the result you will find the specified tag value in the data object of the response", - "type": "string" - }, - "url": { - "description": "page URL required field specify the pages you want to receive timing for", - "type": "string" - } -} - removed
Input schema / properties / body / items / requiredRemoved value: -[ - "id", - "url" -] - changed
Input schema / properties / body / items / typePrevious value: -"object"New value: +[ + "object", + "null" +] - changed
Input schema / requiredPrevious value: -[ - "body" -]New value: +[] - added
Output schema / x-fastmcp-wrap-resultAdded value: +true
- Changed
search17 fields changed- added
Input schema / $schemaAdded value: +"https://json-schema.org/draft/2020-12/schema" - removed
Input schema / properties / category / anyOfRemoved value: -[ - { - "enum": [ - "seo", - "finance", - "social", - "search", - "sales", - "mail" - ], - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / category / defaultRemoved value: -null - changed
Input schema / properties / category / descriptionPrevious value: -"Restrict to one category (seo, finance, social, search, sales, mail). Omit to search everything."New value: +"Restrict retrieval to one category. Omit to search everything. (AIsa-only: tool-router has no equivalent.)" - added
Input schema / properties / category / enumAdded value: +[ + "seo", + "finance", + "social", + "search", + "sales", + "mail" +] - added
Input schema / properties / category / typeAdded value: +"string" - added
Input schema / properties / known_fieldsAdded value: +{ + "additionalProperties": true, + "default": {}, + "description": "Known values such as ticker, URL, provider, or identifier that improve retrieval.", + "type": "object" +} - changed
Input schema / properties / limit / descriptionPrevious value: -"Maximum candidates, 1-10"New value: +"Maximum number of additional direct tool candidates." - added
Input schema / properties / limit / maximumAdded value: +20 - added
Input schema / properties / limit / minimumAdded value: +1 - added
Input schema / properties / provider_filtersAdded value: +{ + "default": [], + "description": "Optional exact catalog provider keys used to narrow retrieval (for example similarweb). Do not use display brands. Omit this field if the exact key is unknown.", + "items": { + "type": "string" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": true +} - changed
Input schema / properties / query / descriptionPrevious value: -"What you need, in plain language, e.g. 'backlinks of a domain', 'recent tweets by a user', 'insider trades for AAPL'. English works best."New value: +"Natural-language capability or task to discover." - added
Input schema / properties / query / maxLengthAdded value: +2000 - added
Input schema / properties / query / minLengthAdded value: +1 - added
Input schema / properties / session_idAdded value: +{ + "description": "Reuse the session_id returned by Search in all subsequent tool calls for this task. If omitted, a new session is created.", + "maxLength": 128, + "pattern": "^[A-Za-z0-9_-]*$", + "type": "string" +} - added
Output schema / propertiesAdded value: +{ + "next_steps_guidance": { + "anyOf": [ + { + "type": "null" + }, + { + "type": "array" + } + ], + "items": { + "type": "string" + } + }, + "plan": { + "additionalProperties": false, + "anyOf": [ + { + "type": "null" + }, + { + "type": "object" + } + ], + "properties": { + "canonical_use_case": { + "type": "string" + }, + "description": { + "type": "string" + }, + "known_pitfalls": { + "anyOf": [ + { + "type": "null" + }, + { + "type": "array" + } + ], + "items": { + "type": "string" + } + }, + "plan_ref": { + "type": "string" + }, + "primary_tools": { + "anyOf": [ + { + "type": "null" + }, + { + "type": "array" + } + ], + "items": { + "type": "string" + } + }, + "recommended_steps": { + "anyOf": [ + { + "type": "null" + }, + { + "type": "array" + } + ], + "items": { + "type": "string" + } + }, + "related_tools": { + "anyOf": [ + { + "type": "null" + }, + { + "type": "array" + } + ], + "items": { + "type": "string" + } + } + }, + "required": [ + "canonical_use_case", + "description", + "known_pitfalls", + "plan_ref", + "primary_tools", + "recommended_steps", + "related_tools" + ] + }, + "retrieval_mode": { + "anyOf": [ + { + "type": "null" + }, + { + "type": "string" + } + ] + }, + "search_id": { + "type": "string" + }, + "session_id": { + "description": "Reuse the session_id returned by Search in all subsequent tool calls for this task. If omitted, a new session is created.", + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9_-]{1,128}$", + "type": "string" + }, + "tools": { + "anyOf": [ + { + "type": "null" + }, + { + "type": "array" + } + ], + "items": { + "additionalProperties": false, + "properties": { + "arguments_schema": { + "additionalProperties": true, + "anyOf": [ + { + "type": "null" + }, + { + "type": "object" + } + ] + }, + "description": { + "type": "string" + }, + "execution_supported": { + "description": "Whether this router can execute and quote the operation; false retains documentation and discovery only.", + "type": "boolean" + }, + "execution_unsupported_reason": { + "description": "Why execution and quoting remain unavailable through this router.", + "type": "string" + }, + "has_full_schema": { + "type": "boolean" + }, + "match_reasons": { + "anyOf": [ + { + "type": "null" + }, + { + "type": "array" + } + ], + "items": { + "type": "string" + } + }, + "price": { + "additionalProperties": true, + "type": "object" + }, + "retrieval_debug": { + "additionalProperties": false, + "anyOf": [ + { + "type": "null" + }, + { + "type": "object" + } + ], + "properties": { + "fused_rank": { + "type": "integer" + }, + "fused_score": { + "type": "number" + }, + "lexical_rank": { + "type": "integer" + }, + "lexical_score": { + "type": "number" + }, + "rerank_admission_rank": { + "type": "integer" + }, + "rerank_rank": { + "type": "integer" + }, + "rerank_score": { + "anyOf": [ + { + "type": "null" + }, + { + "type": "number" + } + ] + }, + "runtime_availability": { + "type": "string" + }, + "vector_view_ranks": { + "additionalProperties": { + "type": "integer" + }, + "type": "object" + }, + "vector_view_scores": { + "additionalProperties": { + "type": "number" + }, + "type": "object" + } + }, + "required": [ + "fused_rank", + "fused_score", + "lexical_rank", + "lexical_score", + "rerank_admission_rank", + "rerank_rank", + "runtime_availability", + "vector_view_ranks", + "vector_view_scores" + ] + }, + "summary": { + "type": "string" + }, + "tool": { + "type": "string" + } + }, + "required": [ + "description", + "has_full_schema", + "price", + "summary", + "tool" + ], + "type": "object" + } + } +} - added
Output schema / requiredAdded value: +[ + "next_steps_guidance", + "search_id", + "session_id", + "tools" +]
- Changed
use1 field changed- changed
Input schema / properties / max_price_usd / descriptionPrevious value: -"Refuse the call before any spend if it would cost more than this many USD"New value: +"Refuse the call before any spend if its quoted price is above this many USD"
26 tool updates
- Removed
batch_get_schema - Removed
batch_quote - Changed
batch_use18 fields changed- removed
Input schema / $schemaRemoved value: -"https://json-schema.org/draft/2020-12/schema" - added
Input schema / properties / calls / descriptionAdded value: +"Up to 20 items of {call_id, operation_id, arguments}; steps at the same execution_level of a plan go in one batch" - removed
Input schema / properties / calls / items / $schemaRemoved value: -"https://json-schema.org/draft/2020-12/schema" - changed
Input schema / properties / calls / items / additionalPropertiesPrevious value: -falseNew value: +true - removed
Input schema / properties / calls / items / propertiesRemoved value: -{ - "arguments": { - "additionalProperties": true, - "description": "Strictly schema-compliant arguments using the exact field names and types from this tool's arguments_schema.", - "type": "object" - }, - "call_id": { - "description": "Caller-chosen identifier unique within this batch.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "tool": { - "description": "Exact tool name returned by search or batch_get_schema. Never invent a name.", - "minLength": 1, - "type": "string" - } -} - removed
Input schema / properties / calls / items / requiredRemoved value: -[ - "call_id", - "tool", - "arguments" -] - removed
Input schema / properties / calls / maxItemsRemoved value: -20 - removed
Input schema / properties / calls / minItemsRemoved value: -1 - added
Input schema / properties / max_price_usdAdded value: +{ + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Per-call price cap applied to every item" +} - added
Input schema / properties / search_id / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - added
Input schema / properties / search_id / defaultAdded value: +null - changed
Input schema / properties / search_id / descriptionPrevious value: -"Optional search correlation identifier returned by search."New value: +"search_id from the search that found these operations" - removed
Input schema / properties / search_id / typeRemoved value: -"string" - removed
Input schema / properties / session_idRemoved value: -{ - "description": "Reuse the session_id returned by Search in all subsequent tool calls for this task. If omitted, a new session is created.", - "maxLength": 128, - "pattern": "^[A-Za-z0-9_-]*$", - "type": "string" -} - removed
Output schema / $defsRemoved value: -{ - "jsonValue": { - "anyOf": [ - { - "additionalProperties": { - "$ref": "#/$defs/jsonValue" - }, - "type": "object" - }, - { - "items": { - "$ref": "#/$defs/jsonValue" - }, - "type": "array" - }, - { - "type": "string" - }, - { - "type": "number" - }, - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "description": "JSON value returned by the upstream tool." - } -} - removed
Output schema / $schemaRemoved value: -"https://json-schema.org/draft/2020-12/schema" - removed
Output schema / propertiesRemoved value: -{ - "batch_id": { - "type": "string" - }, - "error_count": { - "minimum": 0, - "type": "integer" - }, - "next_steps_guidance": { - "description": "Deterministic next-step instructions derived from this result. Not an authorization grant.", - "items": { - "type": "string" - }, - "type": "array" - }, - "results": { - "items": { - "$schema": "https://json-schema.org/draft/2020-12/schema", - "additionalProperties": false, - "properties": { - "call_id": { - "type": "string" - }, - "customer_cost_micros_usd": { - "description": "Actual customer charge settled by AIsaServices, in micro-USD. Omitted when the upstream response does not report it.", - "minimum": 0, - "type": "integer" - }, - "data": { - "$ref": "#/$defs/jsonValue" - }, - "error": { - "anyOf": [ - { - "$schema": "https://json-schema.org/draft/2020-12/schema", - "additionalProperties": false, - "properties": { - "message": { - "type": "string" - }, - "retryable": { - "type": "boolean" - }, - "status": { - "type": "integer" - }, - "type": { - "enum": [ - "validation", - "authentication", - "payment", - "permission", - "rate_limit", - "upstream", - "timeout", - "internal" - ], - "type": "string" - } - }, - "required": [ - "type", - "status", - "retryable" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "request_id": { - "type": "string" - }, - "successful": { - "type": "boolean" - }, - "tool": { - "type": "string" - }, - "upstream_status": { - "description": "HTTP status returned by AIsaServices when a request was dispatched.", - "type": "integer" - } - }, - "required": [ - "call_id", - "tool", - "successful", - "request_id" - ], - "type": "object" - }, - "type": "array" - }, - "session_id": { - "description": "Reuse the session_id returned by Search in all subsequent tool calls for this task. If omitted, a new session is created.", - "maxLength": 128, - "minLength": 1, - "pattern": "^[A-Za-z0-9_-]*$", - "type": "string" - }, - "success_count": { - "minimum": 0, - "type": "integer" - }, - "total_count": { - "minimum": 1, - "type": "integer" - } -} - removed
Output schema / requiredRemoved value: -[ - "session_id", - "batch_id", - "total_count", - "success_count", - "error_count", - "results", - "next_steps_guidance" -]
- Changed
get_dataforseo_on_page_available_filters1 field changed- removed
Output schema / x-fastmcp-wrap-resultRemoved value: -true
- Changed
get_dataforseo_on_page_lighthouse_audits1 field changed- removed
Output schema / x-fastmcp-wrap-resultRemoved value: -true
- Changed
get_dataforseo_on_page_lighthouse_languages1 field changed- removed
Output schema / x-fastmcp-wrap-resultRemoved value: -true
- Changed
get_dataforseo_on_page_lighthouse_versions1 field changed- removed
Output schema / x-fastmcp-wrap-resultRemoved value: -true
- Changed
get_dataforseo_on_page_summary3 fields changed- changed
Input schema / properties / id / descriptionPrevious value: -"<em>task identifier</em><br><strong>required field</strong><br>you can get this ID in the response of the <a href=\"/v3/on_page/task_post/\" target=\"_blank\" rel=\"noopener noreferrer\">Task POST</a> endpoint<br>example:<br>“07131248-1535-0216-1000-17384017ad04”"New value: +"task identifier required field you can get this ID in the response of the Task POST endpoint example: “07131248-1535-0216-1000-17384017ad04”" - removed
Input schema / properties / id / exampleRemoved value: -"00000000-0000-0000-0000-000000000000" - removed
Output schema / x-fastmcp-wrap-resultRemoved value: -true
- Changed
get_details13 fields changed- removed
Input schema / $schemaRemoved value: -"https://json-schema.org/draft/2020-12/schema" - added
Input schema / properties / argumentsAdded value: +{ + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The arguments the operation would be called with, for a price that reflects them. Keyed by operation_id for a batch, or passed flat for a single operation_id. Routes whose required parameters are validated before pricing have no price without them." +} - removed
Input schema / properties / include_arguments_schemaRemoved value: -{ - "default": true, - "description": "Return the complete arguments_schema. Defaults to true.", - "type": "boolean" -} - changed
Input schema / properties / include_documentation / descriptionPrevious value: -"Return the complete immutable public OpenAPI operation, referenced declarations, provenance and scoped completeness. Documentation does not change execution support."New value: +"Include the complete native public OpenAPI document, reference closure and scoped completeness. Existing execution schemas remain unchanged." - removed
Input schema / properties / include_response_schemaRemoved value: -{ - "default": false, - "description": "Return the complete response_schema. Defaults to false.", - "type": "boolean" -} - added
Input schema / properties / operation_idAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "One operation_id from search" +} - added
Input schema / properties / operation_idsAdded value: +{ + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Up to 20 operation_ids, for a batch" +} - removed
Input schema / properties / session_idRemoved value: -{ - "description": "Reuse the session_id returned by Search in all subsequent tool calls for this task. If omitted, a new session is created.", - "maxLength": 128, - "pattern": "^[A-Za-z0-9_-]*$", - "type": "string" -} - removed
Input schema / properties / toolsRemoved value: -{ - "description": "Exact tool names returned by search whose complete contracts are needed. Never invent tool names.", - "items": { - "minLength": 1, - "pattern": "^\\S(?:.*\\S)?$", - "type": "string" - }, - "maxItems": 20, - "minItems": 1, - "type": "array", - "uniqueItems": true -} - added
Input schema / properties / with_quoteAdded value: +{ + "default": true, + "description": "Whether each operation is priced for this account before the answer. One round trip per operation; spends nothing.", + "type": "boolean" +} - removed
Input schema / requiredRemoved value: -[ - "tools" -] - removed
Output schema / propertiesRemoved value: -{ - "error_count": { - "type": "integer" - }, - "next_steps_guidance": { - "anyOf": [ - { - "type": "null" - }, - { - "type": "array" - } - ], - "items": { - "type": "string" - } - }, - "session_id": { - "description": "Reuse the session_id returned by Search in all subsequent tool calls for this task. If omitted, a new session is created.", - "maxLength": 128, - "minLength": 1, - "pattern": "^[A-Za-z0-9_-]{1,128}$", - "type": "string" - }, - "success_count": { - "type": "integer" - }, - "tools": { - "additionalProperties": { - "additionalProperties": false, - "properties": { - "arguments_schema": { - "additionalProperties": true, - "anyOf": [ - { - "type": "null" - }, - { - "type": "object" - } - ] - }, - "canonical_operation_id": { - "type": "string" - }, - "documentation": { - "additionalProperties": true, - "type": "object" - }, - "error": { - "additionalProperties": false, - "anyOf": [ - { - "type": "null" - }, - { - "type": "object" - } - ], - "properties": { - "code": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "code", - "message" - ] - }, - "execution_supported": { - "description": "Whether this router can execute and quote the operation; false retains documentation and discovery only.", - "type": "boolean" - }, - "execution_unsupported_reason": { - "description": "Why execution and quoting remain unavailable through this router.", - "type": "string" - }, - "idempotent": { - "anyOf": [ - { - "type": "null" - }, - { - "type": "boolean" - } - ] - }, - "known_pitfalls": { - "anyOf": [ - { - "type": "null" - }, - { - "type": "array" - } - ], - "items": { - "type": "string" - } - }, - "read_only": { - "anyOf": [ - { - "type": "null" - }, - { - "type": "boolean" - } - ] - }, - "response_schema": { - "additionalProperties": true, - "anyOf": [ - { - "type": "null" - }, - { - "type": "object" - } - ] - }, - "side_effects": { - "anyOf": [ - { - "type": "null" - }, - { - "type": "array" - } - ], - "items": { - "type": "string" - } - }, - "successful": { - "type": "boolean" - } - }, - "required": [ - "successful" - ], - "type": "object" - }, - "type": "object" - }, - "total_count": { - "type": "integer" - } -} - removed
Output schema / requiredRemoved value: -[ - "error_count", - "next_steps_guidance", - "session_id", - "success_count", - "tools", - "total_count" -]
- Changed
post_dataforseo_on_page_content_parsing7 fields changed- removed
Input schema / properties / body / exampleRemoved value: -[ - { - "id": "11161551-1535-0216-0000-500b3f307f92", - "url": "https://dataforseo.com/blog/a-versatile-alternative-to-google-trends-exploring-the-power-of-dataforseo-trends-api" - } -] - removed
Input schema / properties / body / items / anyOfRemoved value: -[ - { - "example": [ - { - "id": "11161551-1535-0216-0000-500b3f307f92", - "url": "https://dataforseo.com/blog/a-versatile-alternative-to-google-trends-exploring-the-power-of-dataforseo-trends-api" - } - ], - "properties": { - "id": { - "description": "<em>ID of the task</em><br><strong>required field</strong><br>you can get this ID in the response of the <a href=\"/v3/on_page/task_post/\">Task POST</a> endpoint<br><strong>note:</strong> the <code>enable_content_parsing</code> parameter in the POST request must be set to <code>true</code><br>example:<br><code>\"07131248-1535-0216-1000-17384017ad04\"</code>", - "type": "string" - }, - "markdown_view": { - "description": "<em>return page content as markdown</em><br>optional field<br>if set to <code>true</code>, the markdown-formatted content of the page will be returned in the <code>page_as_markdown</code> field of the response;<br>default value: <code>false</code>", - "type": [ - "boolean", - "null" - ] - }, - "url": { - "description": "<em>URL of the content to parse</em><br><strong>required field</strong><br>URL of the page to parse<br>example:<br>`https://dataforseo.com/blog/a-versatile-alternative-to-google-trends-exploring-the-power-of-dataforseo-trends-api`", - "type": "string" - } - }, - "type": "object" - } -] - added
Input schema / properties / body / items / propertiesAdded value: +{ + "id": { + "description": "ID of the task required field you can get this ID in the response of the Task POST endpoint note: the enable_content_parsing parameter in the POST request must be set to true example: \"07131248-1535-0216-1000-17384017ad04\"", + "type": "string" + }, + "markdown_view": { + "description": "return page content as markdown optional field if set to true, the markdown-formatted content of the page will be returned in the page_as_markdown field of the response; default value: false", + "type": "boolean" + }, + "url": { + "description": "URL of the content to parse required field URL of the page to parse example: https://dataforseo.com/blog/a-versatile-alternative-to-google-trends-exploring-the-power-of-dataforseo-trends-api", + "type": "string" + } +} - added
Input schema / properties / body / items / requiredAdded value: +[ + "url", + "id" +] - changed
Input schema / properties / body / items / typePrevious value: -[ - "object", - "null" -]New value: +"object" - changed
Input schema / requiredPrevious value: -[]New value: +[ + "body" +] - removed
Output schema / x-fastmcp-wrap-resultRemoved value: -true
- Changed
post_dataforseo_on_page_duplicate_content7 fields changed- removed
Input schema / properties / body / exampleRemoved value: -[ - { - "id": "07281559-0695-0216-0000-c269be8b7592", - "url": "https://www.etsy.com/" - } -] - removed
Input schema / properties / body / items / anyOfRemoved value: -[ - { - "example": [ - { - "id": "07281559-0695-0216-0000-c269be8b7592", - "url": "https://www.etsy.com/" - } - ], - "properties": { - "id": { - "description": "<em>ID of the task</em><br><strong>required field</strong><br>you can get this ID in the response of the <a href=\"https://docs.dataforseo.com/v3/on_page/task_post/\">Task POST</a> endpoint<br>example:<br>\"07131248-1535-0216-1000-17384017ad04\"", - "type": "string" - }, - "limit": { - "description": "<em>the maximum number of returned pages</em><br>optional field<br>default value: <code>100</code><br>maximum value: <code>1000</code>", - "type": [ - "integer", - "null" - ] - }, - "offset": { - "description": "<em>offset in the results array of returned pages</em><br>optional field<br>default value: <code>0</code><br>maximum value: <code>2000000</code><br>if you specify the <code>10</code> value, the first ten pages in the results array will be omitted and the data will be provided for the successive pages", - "type": [ - "integer", - "null" - ] - }, - "similarity": { - "description": "<em>content similarity score</em><br>by default, the content is considered duplicate if the value is greater than or equals <code>6</code><br>you can specify any similarity score in the 0-to-10 range", - "type": [ - "integer", - "null" - ] - }, - "tag": { - "description": "<em>user-defined task identifier</em><br>optional field<br><em>the character limit is 255</em><br>you can use this parameter to identify the task and match it with the result<br>you will find the specified <code>tag</code> value in the <code>data</code> object of the response", - "type": [ - "string", - "null" - ] - }, - "url": { - "description": "<em>page URL</em><br><strong>required field</strong><br>specify the initial page you want to receive duplicate content for", - "type": "string" - } - }, - "type": "object" - } -] - added
Input schema / properties / body / items / propertiesAdded value: +{ + "id": { + "description": "ID of the task required field you can get this ID in the response of the Task POST endpoint example: “07131248-1535-0216-1000-17384017ad04”", + "type": "string" + }, + "limit": { + "description": "the maximum number of returned pages optional field default value: 100 maximum value: 1000", + "type": "integer" + }, + "offset": { + "description": "offset in the results array of returned pages optional field default value: 0 maximum value: 2000000 if 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", + "type": "integer" + }, + "similarity": { + "description": "content similarity score by default, the content is considered duplicate if the value is greater than or equals 6 you can specify any similarity score in the 0-to-10 range", + "type": "integer" + }, + "tag": { + "description": "user-defined task identifier optional field the character limit is 255 you can use this parameter to identify the task and match it with the result you will find the specified tag value in the data object of the response", + "type": "string" + }, + "url": { + "description": "page URL required field specify the initial page you want to receive duplicate content for", + "type": "string" + } +} - added
Input schema / properties / body / items / requiredAdded value: +[ + "id", + "url" +] - changed
Input schema / properties / body / items / typePrevious value: -[ - "object", - "null" -]New value: +"object" - changed
Input schema / requiredPrevious value: -[]New value: +[ + "body" +] - removed
Output schema / x-fastmcp-wrap-resultRemoved value: -true
- Changed
post_dataforseo_on_page_duplicate_tags7 fields changed- removed
Input schema / properties / body / exampleRemoved value: -[ - { - "id": "07281559-0695-0216-0000-c269be8b7592", - "limit": 10, - "type": "duplicate_description" - } -] - removed
Input schema / properties / body / items / anyOfRemoved value: -[ - { - "example": [ - { - "id": "07281559-0695-0216-0000-c269be8b7592", - "limit": 10, - "type": "duplicate_description" - } - ], - "properties": { - "accumulator": { - "description": "<em>tag value</em><br>optional field<br>specify a title or description here if you want to receive a list of duplicate pages that contains this tag", - "type": [ - "string", - "null" - ] - }, - "id": { - "description": "<em>ID of the task</em><br><strong>required field</strong><br>you can get this ID in the response of the <a href=\"https://docs.dataforseo.com/v3/on_page/task_post/\">Task POST</a> endpoint<br>example:<br>\"07131248-1535-0216-1000-17384017ad04\"", - "type": "string" - }, - "limit": { - "description": "<em>the maximum number of returned pages</em><br>optional field<br>default value: <code>100</code><br>maximum value: <code>1000</code>", - "type": [ - "integer", - "null" - ] - }, - "offset": { - "description": "<em>offset in the results array of returned pages</em><br>optional field<br>default value: <code>0</code><br>maximum value: <code>2000000</code><br>if you specify the <code>10</code> value, the first ten pages in the results array will be omitted and the data will be provided for the successive pages", - "type": [ - "integer", - "null" - ] - }, - "tag": { - "description": "<em>user-defined task identifier</em><br>optional field<br><em>the character limit is 255</em><br>you can use this parameter to identify the task and match it with the result<br>you will find the specified <code>tag</code> value in the <code>data</code> object of the response", - "type": [ - "string", - "null" - ] - }, - "type": { - "description": "type of element", - "type": "string" - } - }, - "type": "object" - } -] - added
Input schema / properties / body / items / propertiesAdded value: +{ + "accumulator": { + "description": "tag value optional field specify a title or description here if you want to receive a list of duplicate pages that contains this tag", + "type": "string" + }, + "id": { + "description": "ID of the task required field you can get this ID in the response of the Task POST endpoint example: “07131248-1535-0216-1000-17384017ad04”", + "type": "string" + }, + "limit": { + "description": "the maximum number of returned pages optional field default value: 100 maximum value: 1000", + "type": "integer" + }, + "offset": { + "description": "offset in the results array of returned pages optional field default value: 0 maximum value: 2000000 if 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", + "type": "integer" + }, + "tag": { + "description": "user-defined task identifier optional field the character limit is 255 you can use this parameter to identify the task and match it with the result you will find the specified tag value in the data object of the response", + "type": "string" + }, + "type": { + "description": "type of element", + "enum": [ + "duplicate_title", + "duplicate_description" + ], + "type": "string" + } +} - added
Input schema / properties / body / items / requiredAdded value: +[ + "id", + "type" +] - changed
Input schema / properties / body / items / typePrevious value: -[ - "object", - "null" -]New value: +"object" - changed
Input schema / requiredPrevious value: -[]New value: +[ + "body" +] - removed
Output schema / x-fastmcp-wrap-resultRemoved value: -true
- Changed
post_dataforseo_on_page_force_stop7 fields changed- removed
Input schema / properties / body / exampleRemoved value: -[ - { - "id": "08121600-1535-0216-0000-37b4c7a34453" - }, - { - "id": "08121600-1535-0216-0000-d6a5000b6897" - } -] - removed
Input schema / properties / body / items / anyOfRemoved value: -[ - { - "example": [ - { - "id": "08121600-1535-0216-0000-37b4c7a34453" - }, - { - "id": "08121600-1535-0216-0000-d6a5000b6897" - } - ], - "properties": { - "id": { - "description": "<em>ID of the task</em><br><strong>required field</strong><br>you can get this ID in the response of the <a href=\"/v3/on_page/task_post/\">Task POST</a> endpoint<br>example:<br>\"07131248-1535-0216-1000-17384017ad04\"<p><strong>note</strong>: you can set up to 1000 <code>id</code> values as separate objects in the POST array", - "type": "string" - } - }, - "type": "object" - } -] - added
Input schema / properties / body / items / propertiesAdded value: +{ + "id": { + "description": "ID of the task required field you can get this ID in the response of the Task POST endpoint example: “07131248-1535-0216-1000-17384017ad04” note: you can set up to 1000 id values as separate objects in the POST array", + "type": "string" + } +} - added
Input schema / properties / body / items / requiredAdded value: +[ + "id" +] - changed
Input schema / properties / body / items / typePrevious value: -[ - "object", - "null" -]New value: +"object" - changed
Input schema / requiredPrevious value: -[]New value: +[ + "body" +] - removed
Output schema / x-fastmcp-wrap-resultRemoved value: -true
- Changed
post_dataforseo_on_page_keyword_density7 fields changed- removed
Input schema / properties / body / exampleRemoved value: -[ - { - "filters": [ - "frequency", - ">", - 5 - ], - "id": "09101923-1535-0216-0000-2389a8854b70", - "keyword_length": 2, - "url": "https://dataforseo.com/" - } -] - removed
Input schema / properties / body / items / anyOfRemoved value: -[ - { - "example": [ - { - "filters": [ - "frequency", - ">", - 5 - ], - "id": "09101923-1535-0216-0000-2389a8854b70", - "keyword_length": 2, - "url": "https://dataforseo.com/" - } - ], - "properties": { - "filters": { - "description": "<em>array of results filtering parameters</em><br>optional field<br><strong>you can add several filters at once (8 filters maximum)</strong><br>you should set a logical operator <code>and</code>, <code>or</code> between the conditions<br>the following operators are supported:<br><code>regex</code>, <code>not_regex</code>, <code>=</code>, <code><></code>, <code>in</code>, <code>not_in</code>, <code>like</code>, <code>not_like</code><br>you can use the <code>%</code> operator with <code>like</code> and <code>not_like</code> to match any string of zero or more characters<br>example:<br><code>[\"keyword\",\"=\",\"%seo%\"]</code><p><code>[[\"keyword\",\"=\",\"%seo%\"],<br>\"and\",<br>[\"frequency\",\"<\",\"6\"]]</code><p><code>[[\"keyword\",\"not_like\",\"%seo%\"],<br>\"and\",<br>[[\"frequency\",\">\",\"6\"],\"or\",[\"density\",\">\",\"0.02\"]]]</code><p>The full list of possible filters is available <a href=\"/v3/on_page/filters_and_thresholds/?bash\" target=\"_blank\" rel=\"noopener noreferrer\">by this link.</a>", - "items": { - "type": [ - "object", - "null" - ] - }, - "type": [ - "array", - "null" - ] - }, - "id": { - "description": "<em>ID of the task</em><br><strong>required field</strong><br>you can get this ID in the response of the <a href=\"/v3/on_page/task_post/\">Task POST</a> endpoint<br>example:<br>\"07131248-1535-0216-1000-17384017ad04\"", - "type": "string" - }, - "keyword_length": { - "description": "<em>number of words for a keyword</em><br><strong>required field</strong><br>possible values:<br><code>1</code>, <code>2</code>, <code>3</code>, <code>4</code>, <code>5</code>", - "type": "integer" - }, - "limit": { - "description": "<em>the maximum number of returned keywords</em><br>optional field<br>default value: <code>100</code><br>maximum value: <code>1000</code>", - "type": [ - "integer", - "null" - ] - }, - "order_by": { - "description": "<em>results sorting rules</em><br>optional field<br>you can use the same values as in the <code>filters</code> array to sort the results<br>possible sorting types:<br><code>asc</code> - results will be sorted in the ascending order<br><code>desc</code> - results will be sorted in the descending order<br>you should use a comma to set up a sorting type<br>example:<br><code>[\"frequency,desc\"]</code><br><strong>note that you can set no more than three sorting rules in a single request</strong><br>you should use a comma to separate several sorting rules<br>example:<br><code>[\"keyword,asc\",\"frequency,desc\"]</code>", - "items": { - "type": "string" - }, - "type": [ - "array", - "null" - ] - }, - "tag": { - "description": "<em>user-defined task identifier</em><br>optional field<br><em>the character limit is 255</em><br>you can use this parameter to identify the task and match it with the result<br>you will find the specified <code>tag</code> value in the <code>data</code> object of the response", - "type": [ - "string", - "null" - ] - }, - "url": { - "description": "<em>page URL</em><br>optional field<br><strong>if you do not specify a page here, the results will be provided for the whole website</strong><br>if you use this field, the API response will contain only keywords from the specified page<br>a page should be specified with absolute URL (including <code>http://</code> or <code>https://</code>)", - "type": [ - "string", - "null" - ] - } - }, - "type": "object" - } -] - added
Input schema / properties / body / items / propertiesAdded value: +{ + "filters": { + "description": "array of results filtering parameters optional field you can add several filters at once (8 filters maximum) you should set a logical operator and, or between the conditions the following operators are supported: regex, not_regex, =, <>, in, not_in, like, not_like you can use the % operator with like and not_like to match any string of zero or more characters example: [\"keyword\",\"=\",\"%seo%\"] [[\"keyword\",\"=\",\"%seo%\"], \"and\", [\"frequency\",\"<\",\"6\"]] [[\"keyword\",\"not_like\",\"%seo%\"], \"and\", [[\"frequency\",\">\",\"6\"],\"or\",[\"density\",\">\",\"0.02\"]]] The full list of possible filters is available by this link.", + "items": {}, + "type": "array" + }, + "id": { + "description": "ID of the task required field you can get this ID in the response of the Task POST endpoint example: “07131248-1535-0216-1000-17384017ad04”", + "type": "string" + }, + "keyword_length": { + "description": "number of words for a keyword required field possible values: 1, 2, 3, 4, 5", + "type": "integer" + }, + "limit": { + "description": "the maximum number of returned keywords optional field default value: 100 maximum value: 1000", + "type": "integer" + }, + "order_by": { + "description": "results sorting rules optional field you can use the same values as in the filters array to sort the results possible sorting types: asc – results will be sorted in the ascending order desc – results will be sorted in the descending order you should use a comma to set up a sorting type example: [\"frequency,desc\"] note that you can set no more than three sorting rules in a single request you should use a comma to separate several sorting rules example: [\"keyword,asc\",\"frequency,desc\"]", + "items": { + "type": "string" + }, + "type": "array" + }, + "tag": { + "description": "user-defined task identifier optional field the character limit is 255 you can use this parameter to identify the task and match it with the result you will find the specified tag value in the data object of the response", + "type": "string" + }, + "url": { + "description": "page URL optional field if you do not specify a page here, the results will be provided for the whole website if you use this field, the API response will contain only keywords from the specified page a page should be specified with absolute URL (including http:// or https://)", + "type": "string" + } +} - added
Input schema / properties / body / items / requiredAdded value: +[ + "id", + "keyword_length" +] - changed
Input schema / properties / body / items / typePrevious value: -[ - "object", - "null" -]New value: +"object" - changed
Input schema / requiredPrevious value: -[]New value: +[ + "body" +] - removed
Output schema / x-fastmcp-wrap-resultRemoved value: -true
- Changed
post_dataforseo_on_page_lighthouse_live_json7 fields changed- removed
Input schema / properties / body / exampleRemoved value: -[ - { - "for_mobile": true, - "tag": "some_string_123", - "url": "https://dataforseo.com" - } -] - removed
Input schema / properties / body / items / anyOfRemoved value: -[ - { - "example": [ - { - "for_mobile": true, - "tag": "some_string_123", - "url": "https://dataforseo.com" - } - ], - "properties": { - "audits": { - "description": "<em>Lighthouse audits</em><br>optional field<br>audits are individual tests Lighthouse runs for each specific feature/optimization/metric to produce a numeric score (<a href=\"https://github.com/GoogleChrome/lighthouse/blob/master/docs/architecture.md#components--terminology\" rel=\"noopener noreferrer\" target=\"_blank\">see official definition</a>); <p><strong>if you ignore this field, we will return data for all audits</strong>;<br>use this field to get data for specific audits you indicate here;<p><strong>Note:</strong> that some audits do not belong to a specific category and are stand-alone page quality measurements;<p>in general, there can be several use cases:<p>1. if you ignore <code>categories</code>, you can use this field to get data for the specified audits only<br>for example, if you ignore <code>\"categories\"</code> and specify <code>\"audits\": [\"metrics/cumulative-layout-shift\",\"metrics/largest-contentful-paint\",\"metrics/total-blocking-time\"]</code>, you will get data only for these audits<p>2. if you specify a category, you can use this field to additionally receive audits that do not belong to the category(-ies) you specified<br>for example, if you specify <code>\"categories\": [\"seo\"]</code> and <code>\"audits\": [\"metrics/cumulative-layout-shift\",\"metrics/largest-contentful-paint\",\"metrics/total-blocking-time\"]</code>, you will get only these audits under \"performance\" and all audits under \"seo\"<p>you can get <a href=\"/v3/on_page/lighthouse/audits/\">the full list of possible audits here</a>", - "items": { - "type": "string" - }, - "type": [ - "array", - "null" - ] - }, - "browser_cpu_throttling_multiplier": { - "description": "<em>browser CPU throttling multiplier</em><br><strong>required if <code>browser_network_throttling_method</code> is set to <code>devtools</code>;</strong><br>set the CPU throttling multiplier to simulate device performance conditions during the Lighthouse audit;<br>can be specified within the following range: <code>1–4</code>;<br><strong>Note:</strong> this parameter is applied only when <code>browser_network_throttling_method</code> is set to <code>devtools</code>;", - "type": [ - "number", - "null" - ] - }, - "browser_network_throttling": { - "description": "<em>browser network throttling</em><br><strong>required if <code>browser_network_throttling_method</code> is set to <code>devtools</code>;</strong><br>set the network throttling profile to simulate connection speed conditions during the Lighthouse audit;<br>possible values: <code>no_throttling</code>, <code>fast_4g</code>, <code>slow_4g</code>, <code>regular_3g</code>, <code>pc</code>;<br><strong>Note:</strong> this parameter is applied only when <code>browser_network_throttling_method</code> is set to <code>devtools</code>;", - "type": [ - "string", - "null" - ] - }, - "browser_network_throttling_method": { - "description": "<em>browser network throttling method</em><br>optional field<br>defines the method used to apply throttling during the Lighthouse audit;<br>possible vaules:<br><code>simulate</code> - calculates estimated performance metrics without applying explicit throttling;<br><code>devtools</code> - applies the throttling settings specified in <code>browser_network_throttling</code> and <code>browser_cpu_throttling_multiplier</code>;<br><code>provided</code> - uses the network conditions of the crawling environment;", - "type": [ - "string", - "null" - ] - }, - "browser_screen_height": { - "description": "<em>browser screen height</em><br>optional field<br>set the screen height of the browser used for the Lighthouse audit to emulate a specific device;<br>can be specified within the following range: <code>240–9999</code>;", - "type": [ - "integer", - "null" - ] - }, - "browser_screen_scale_factor": { - "description": "<em>browser screen scale factor</em><br>optional field<br>set the device pixel ratio of the browser used for the Lighthouse audit;<br>can be specified within the following range: <code>0.5–3</code>;", - "type": [ - "number", - "null" - ] - }, - "browser_screen_width": { - "description": "<em>browser screen width</em><br>optional field<br>set the screen width of the browser used for the Lighthouse audit to emulate a specific device;<br>can be specified within the following range: <code>240–9999</code>;", - "format": "int64", - "type": [ - "integer", - "null" - ] - }, - "categories": { - "description": "<em>categories of Lighthouse audits</em><br>optional field<br>each category is a collection of audits and audit groups that applies weighting and scoring to the section (<a href=\"https://github.com/GoogleChrome/lighthouse/blob/master/docs/architecture.md#auditreport-terminology\" rel=\"noopener noreferrer\" target=\"_blank\">see official definition</a>)<p><strong>if you ignore this field, we will return data for all categories unless you specify <code>audits</code></strong><br>use this field to get data for specific categories you indicate here<p>possible values:<br><code>seo</code>, <code>performance</code>, <code>best_practices</code>, <code>accessibility</code>", - "items": { - "type": "string" - }, - "type": [ - "array", - "null" - ] - }, - "custom_user_agent": { - "description": "<em>custom user agent</em><br>optional field<br>specify the custom user agent used by the browser when running the Lighthouse audit;<br>can be specified with up to 254 characters;", - "type": [ - "string", - "null" - ] - }, - "for_mobile": { - "description": "<em>applies mobile emulation</em><br>optional field<br>if set to <code>true</code>, Lighthouse will use mobile device and screen emulation to test the page against mobile environment<br>if set to <code>false</code>, the results will be provided for desktop<br>default value: <code>false</code>", - "type": [ - "boolean", - "null" - ] - }, - "language_code": { - "description": "<em>lighthouse language code</em><br>optional field<br>you can receive the list of available languages of the search engine with their <code>language_code</code> by making a separate request to <code>https://api.dataforseo.com/v3/on_page/lighthouse/languages</code><br>default value:<br><code class=\"long-string\">en</code>", - "type": [ - "string", - "null" - ] - }, - "language_name": { - "description": "<em>lighthouse language name</em><br>optional field<br>you can receive the list of available languages of the search engine with their <code>language_name</code> by making a separate request to <code>https://api.dataforseo.com/v3/on_page/lighthouse/languages</code><br>default value:<br><code class=\"long-string\">English</code>", - "type": [ - "string", - "null" - ] - }, - "tag": { - "description": "<em>user-defined task identifier</em><br>optional field<br><em>the character limit is 255</em><br>you can use this parameter to identify the task and match it with the result<br>you will find the specified <code>tag</code> value in the <code>data</code> object of the response", - "type": [ - "string", - "null" - ] - }, - "url": { - "description": "<em>target URL</em><br><strong>required field</strong><br>target page should be specified with its absolute URL (including http:// or https://)<br>example:<br><code>https://dataforseo.com/</code>", - "type": "string" - }, - "version": { - "description": "<em>lighthouse version</em><br>optional field<br>you can obtain the results specific to a certain Lighthouse version by specifying its number<br>the list of available versions is available through the <a href=\"/v3/on_page/lighthouse/versions/\" rel=\"noopener noreferrer\" target=\"_blank\">Lighthouse Versions endpoint</a>", - "type": [ - "string", - "null" - ] - } - }, - "type": "object" - } -] - added
Input schema / properties / body / items / propertiesAdded value: +{ + "audits": { + "description": "Lighthouse audits optional field audits are individual tests Lighthouse runs for each specific feature/optimization/metric to produce a numeric score (see official definition); if you ignore this field, we will return data for all audits; use this field to get data for specific audits you indicate here; Note: that some audits do not belong to a specific category and are stand-alone page quality measurements; in general, there can be several use cases: 1. if you ignore categories, you can use this field to get data for the specified audits only for example, if you ignore \"categories\" and specify \"audits\": [\"metrics/cumulative-layout-shift\",\"metrics/largest-contentful-paint\",\"metrics/total-blocking-time\"], you will get data only for these audits 2. if you specify a category, you can use this field to additionally receive audits that do not belong to the category(-ies) you specified for example, if you specify \"categories\": [\"seo\"] and \"audits\": [\"metrics/cumulative-layout-shift\",\"metrics/largest-contentful-paint\",\"metrics/total-blocking-time\"], you will get only these audits under “performance” and all audits under “seo” you can get the full list of possible audits here", + "items": { + "type": "string" + }, + "type": "array" + }, + "categories": { + "description": "categories of Lighthouse audits optional field each category is a collection of audits and audit groups that applies weighting and scoring to the section (see official definition) if you ignore this field, we will return data for all categories unless you specify audits use this field to get data for specific categories you indicate here possible values: seo, performance, best_practices, accessibility", + "items": { + "type": "string" + }, + "type": "array" + }, + "for_mobile": { + "description": "applies mobile emulation optional field if set to true, Lighthouse will use mobile device and screen emulation to test the page against mobile environment if set to false, the results will be provided for desktop default value: false", + "type": "boolean" + }, + "language_code": { + "description": "lighthouse language code optional field you can receive the list of available languages of the search engine with their language_code by making a separate request to https://api.dataforseo.com/v3/on_page/lighthouse/languages default value: en", + "type": "string" + }, + "language_name": { + "description": "lighthouse language name optional field you can receive the list of available languages of the search engine with their language_name by making a separate request to https://api.dataforseo.com/v3/on_page/lighthouse/languages default value: English", + "type": "string" + }, + "tag": { + "description": "user-defined task identifier optional field the character limit is 255 you can use this parameter to identify the task and match it with the result you will find the specified tag value in the data object of the response", + "type": "string" + }, + "url": { + "description": "target URL required field target page should be specified with its absolute URL (including http:// or https://) example: https://dataforseo.com/", + "type": "string" + }, + "version": { + "description": "lighthouse version optional field you can obtain the results specific to a certain Lighthouse version by specifying its number the list of available versions is available through the Lighthouse Versions endpoint", + "type": "string" + } +} - added
Input schema / properties / body / items / requiredAdded value: +[ + "url" +] - changed
Input schema / properties / body / items / typePrevious value: -[ - "object", - "null" -]New value: +"object" - changed
Input schema / requiredPrevious value: -[]New value: +[ + "body" +] - removed
Output schema / x-fastmcp-wrap-resultRemoved value: -true
- Changed
post_dataforseo_on_page_links7 fields changed- removed
Input schema / properties / body / exampleRemoved value: -[ - { - "filters": [ - [ - "dofollow", - "=", - true - ], - "and", - [ - "direction", - "=", - "external" - ] - ], - "id": "07281559-0695-0216-0000-c269be8b7592", - "limit": 10, - "page_from": "/apis/google-trends-api" - } -] - removed
Input schema / properties / body / items / anyOfRemoved value: -[ - { - "example": [ - { - "filters": [ - [ - "dofollow", - "=", - true - ], - "and", - [ - "direction", - "=", - "external" - ] - ], - "id": "07281559-0695-0216-0000-c269be8b7592", - "limit": 10, - "page_from": "/apis/google-trends-api" - } - ], - "properties": { - "filters": { - "description": "<em>array of results filtering parameters</em><br>optional field<br><strong>you can add several filters at once (8 filters maximum)</strong><br>you should set a logical operator <code>and</code>, <code>or</code> between the conditions<br>the following operators are supported:<br><code>regex</code>, <code>not_regex</code>, <code>=</code>, <code><></code>, <code>in</code>, <code>not_in</code>, <code>like</code>, <code>not_like</code><br>you can use the <code>%</code> operator with <code>like</code> and <code>not_like</code> to match any string of zero or more characters<br>example:<br><code>[\"direction\",\"=\",\"external\"]</code><p><code>[[\"domain_to\",\"<>\",\"example.com\"],<br>\"and\",<br>[\"link_from\",\"not_like\",\"%example.com/blog%\"]]</code><p><code>[[\"direction\",\"=\",\"external\"],<br>\"and\",<br>[[\"link_from\",\"like\",\"%example.com/blog%\"],\"or\",[\"link_from\",\"like\",\"%example.com/help%\"]]]</code><p>The full list of possible filters is available <a href=\"/v3/on_page/filters_and_thresholds/?bash\" rel=\"noopener noreferrer\" target=\"_blank\">by this link.</a>", - "items": { - "type": [ - "object", - "null" - ] - }, - "type": [ - "array", - "null" - ] - }, - "id": { - "description": "<em>ID of the task</em><br><strong>required field</strong><br>you can get this ID in the response of the <a href=\"https://docs.dataforseo.com/v3/on_page/task_post/\">Task POST</a> endpoint<br>example:<br>\"07131248-1535-0216-1000-17384017ad04\"", - "type": "string" - }, - "limit": { - "description": "<em>the maximum number of returned links</em><br>optional field<br>default value: <code>100</code><br>maximum value: <code>1000</code>", - "type": [ - "integer", - "null" - ] - }, - "offset": { - "description": "<em>offset in the results array of returned links</em><br>optional field<br>default value: <code>0</code><br>maximum value: <code>2000000</code><br>if you specify the <code>10</code> value, the first ten links in the results array will be omitted and the data will be provided for the successive links", - "type": [ - "integer", - "null" - ] - }, - "page_from": { - "description": "<em>relative page URL</em><br>optional field<br>if you use this field, the API response will contain only links from the specified page<br>note that in this field you can specify relative URLs only", - "type": [ - "string", - "null" - ] - }, - "page_to": { - "description": "<em>relative page URL</em><br>optional field<br>if you use this field, the API response will contain only internal links pointing to the specified page<br>note that in this field you can specify relative URLs only", - "type": [ - "string", - "null" - ] - }, - "search_after_token": { - "description": "<em>token for subsequent requests</em><br>optional field<br>provided in the identical filed of the response to each request;<br>use this parameter to avoid timeouts while trying to obtain over <code>20,000</code> results in a single request;<br>by specifying the unique <code>search_after_token</code> value from the response array, you will get the subsequent results of the initial task;<br><code>search_after_token</code> values are unique for each subsequent task ;<br><strong>Note:</strong> if the <code>search_after_token</code> is specified in the request, all other parameters should be identical to the previous request", - "type": [ - "string", - "null" - ] - }, - "tag": { - "description": "<em>user-defined task identifier</em><br>optional field<br><em>the character limit is 255</em><br>you can use this parameter to identify the task and match it with the result<br>you will find the specified <code>tag</code> value in the <code>data</code> object of the response", - "type": [ - "string", - "null" - ] - } - }, - "type": "object" - } -] - added
Input schema / properties / body / items / propertiesAdded value: +{ + "filters": { + "description": "array of results filtering parameters optional field you can add several filters at once (8 filters maximum) you should set a logical operator and, or between the conditions the following operators are supported: regex, not_regex, =, , in, not_in, like, not_like you can use the % operator with like and not_like to match any string of zero or more characters example: [\"direction\",\"=\",\"external\"] [[\"domain_to\",\"\",\"example.com\"], \"and\", [\"link_from\",\"not_like\",\"%example.com/blog%\"]] [[\"direction\",\"=\",\"external\"], \"and\", [[\"link_from\",\"like\",\"%example.com/blog%\"],\"or\",[\"link_from\",\"like\",\"%example.com/help%\"]]] The full list of possible filters is available by this link.", + "items": {}, + "type": "array" + }, + "id": { + "description": "ID of the task required field you can get this ID in the response of the Task POST endpoint example: “07131248-1535-0216-1000-17384017ad04”", + "type": "string" + }, + "limit": { + "description": "the maximum number of returned links optional field default value: 100 maximum value: 1000", + "type": "integer" + }, + "offset": { + "description": "offset in the results array of returned links optional field default value: 0 maximum value: 2000000 if you specify the 10 value, the first ten links in the results array will be omitted and the data will be provided for the successive links", + "type": "integer" + }, + "page_from": { + "description": "relative page URL optional field if you use this field, the API response will contain only links from the specified page note that in this field you can specify relative URLs only", + "type": "string" + }, + "page_to": { + "description": "relative page URL optional field if you use this field, the API response will contain only internal links pointing to the specified page note that in this field you can specify relative URLs only", + "type": "string" + }, + "search_after_token": { + "description": "token for subsequent requests optional field provided 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", + "type": "string" + }, + "tag": { + "description": "user-defined task identifier optional field the character limit is 255 you can use this parameter to identify the task and match it with the result you will find the specified tag value in the data object of the response", + "type": "string" + } +} - added
Input schema / properties / body / items / requiredAdded value: +[ + "id" +] - changed
Input schema / properties / body / items / typePrevious value: -[ - "object", - "null" -]New value: +"object" - changed
Input schema / requiredPrevious value: -[]New value: +[ + "body" +] - removed
Output schema / x-fastmcp-wrap-resultRemoved value: -true
- Changed
post_dataforseo_on_page_microdata7 fields changed- removed
Input schema / properties / body / exampleRemoved value: -[ - { - "id": "02241700-1535-0216-0000-034137259bc1", - "url": "https://dataforseo.com/apis" - } -] - removed
Input schema / properties / body / items / anyOfRemoved value: -[ - { - "example": [ - { - "id": "02241700-1535-0216-0000-034137259bc1", - "url": "https://dataforseo.com/apis" - } - ], - "properties": { - "id": { - "description": "<em>ID of the task</em><br><strong>required field</strong><br>you can get this ID in the response of the <a href=\"/v3/on_page/task_post/\">Task POST</a> endpoint<br>example:<br><code>\"07131248-1535-0216-1000-17384017ad04\"</code>", - "type": "string" - }, - "tag": { - "description": "<em>user-defined task identifier</em><br>optional field<br><em>the character limit is 255</em><br>you can use this parameter to identify the task and match it with the result<br>you will find the specified <code>tag</code> value in the <code>data</code> object of the response", - "type": [ - "string", - "null" - ] - }, - "url": { - "description": "<em>resource URL</em><br><strong>required field</strong><br>you can get this URL in the response of the <a href=\"/v3/on_page/pages/\">Pages</a> endpoint<br>example:<br><code>https://dataforseo.com/apis</code>", - "type": "string" - } - }, - "type": "object" - } -] - added
Input schema / properties / body / items / propertiesAdded value: +{ + "id": { + "description": "ID of the task required field you can get this ID in the response of the Task POST endpoint example: \"07131248-1535-0216-1000-17384017ad04\"", + "type": "string" + }, + "tag": { + "description": "user-defined task identifier optional field the character limit is 255 you can use this parameter to identify the task and match it with the result you will find the specified tag value in the data object of the response", + "type": "string" + }, + "url": { + "description": "resource URL required field you can get this URL in the response of the Pages endpoint example: https://dataforseo.com/apis", + "type": "string" + } +} - added
Input schema / properties / body / items / requiredAdded value: +[ + "id", + "url" +] - changed
Input schema / properties / body / items / typePrevious value: -[ - "object", - "null" -]New value: +"object" - changed
Input schema / requiredPrevious value: -[]New value: +[ + "body" +] - removed
Output schema / x-fastmcp-wrap-resultRemoved value: -true
- Changed
post_dataforseo_on_page_non_indexable7 fields changed- removed
Input schema / properties / body / exampleRemoved value: -[ - { - "filters": [ - [ - "reason", - "=", - "robots_txt" - ], - "and", - [ - "url", - "like", - "%go%" - ] - ], - "id": "07281559-0695-0216-0000-c269be8b7592", - "limit": 10 - } -] - removed
Input schema / properties / body / items / anyOfRemoved value: -[ - { - "example": [ - { - "filters": [ - [ - "reason", - "=", - "robots_txt" - ], - "and", - [ - "url", - "like", - "%go%" - ] - ], - "id": "07281559-0695-0216-0000-c269be8b7592", - "limit": 10 - } - ], - "properties": { - "filters": { - "description": "<em>array of results filtering parameters</em><br>optional field<br><strong>you can add several filters at once (8 filters maximum)</strong><br>you should set a logical operator <code>and</code>, <code>or</code> between the conditions<br>the following operators are supported:<br><code>regex</code>, <code>not_regex</code>, <code><</code>, <code><=</code>, <code>></code>, <code>>=</code>, <code>=</code>, <code><></code>, <code>in</code>, <code>not_in</code>, <code>like</code>, <code>not_like</code><br>you can use the <code>%</code> operator with <code>like</code> and <code>not_like</code> to match any string of zero or more characters<br>example:<br><code>[[\"reason\",\"<>\",\"robots_txt\"],<br>\"and\",<br>[\"url\",\"not_like\",\"%/wp-admin/%\"]]</code><p><code>[[\"url\",\"not_like\",\"%/wp-admin/%\"],<br>\"and\",<br>[[\"reason\",\"<>\",\"meta_tag\"],\"or\",[\"reason\",\"<>\",\"http_header\"]]]</code><p>The full list of possible filters is available <a href=\"/v3/on_page/filters_and_thresholds/?bash\" target=\"_blank\" rel=\"noopener noreferrer\">by this link.</a>", - "items": { - "type": [ - "object", - "null" - ] - }, - "type": [ - "array", - "null" - ] - }, - "id": { - "description": "<em>ID of the task</em><br><strong>required field</strong><br>you can get this ID in the response of the <a href=\"/v3/on_page/task_post/\">Task POST</a> endpoint<br>example:<br>\"07131248-1535-0216-1000-17384017ad04\"", - "type": "string" - }, - "limit": { - "description": "<em>the maximum number of returned pages</em><br>optional field<br>default value: <code>100</code><br>maximum value: <code>1000</code>", - "type": [ - "integer", - "null" - ] - }, - "offset": { - "description": "<em>offset in the results array of returned pages</em><br>optional field<br>default value: <code>0</code><br>maximum value: <code>2000000</code><br>if you specify the <code>10</code> value, the first ten pages in the results array will be omitted and the data will be provided for the successive pages", - "type": [ - "integer", - "null" - ] - } - }, - "type": "object" - } -] - added
Input schema / properties / body / items / propertiesAdded value: +{ + "filters": { + "description": "array of results filtering parameters optional field you can add several filters at once (8 filters maximum) you should set a logical operator and, or between the conditions the following operators are supported: regex, not_regex, <, <=, >, >=, =, <>, in, not_in, like, not_like you can use the % operator with like and not_like to match any string of zero or more characters example: [[\"reason\",\"<>\",\"robots_txt\"], \"and\", [\"url\",\"not_like\",\"%/wp-admin/%\"]] [[\"url\",\"not_like\",\"%/wp-admin/%\"], \"and\", [[\"reason\",\"<>\",\"meta_tag\"],\"or\",[\"reason\",\"<>\",\"http_header\"]]] The full list of possible filters is available by this link.", + "items": {}, + "type": "array" + }, + "id": { + "description": "ID of the task required field you can get this ID in the response of the Task POST endpoint example: “07131248-1535-0216-1000-17384017ad04”", + "type": "string" + }, + "limit": { + "description": "the maximum number of returned pages optional field default value: 100 maximum value: 1000", + "type": "integer" + }, + "offset": { + "description": "offset in the results array of returned pages optional field default value: 0 maximum value: 2000000 if 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", + "type": "integer" + } +} - added
Input schema / properties / body / items / requiredAdded value: +[ + "id" +] - changed
Input schema / properties / body / items / typePrevious value: -[ - "object", - "null" -]New value: +"object" - changed
Input schema / requiredPrevious value: -[]New value: +[ + "body" +] - removed
Output schema / x-fastmcp-wrap-resultRemoved value: -true
- Added
post_dataforseo_on_page_page_screenshot - Changed
post_dataforseo_on_page_raw_html7 fields changed- removed
Input schema / properties / body / exampleRemoved value: -[ - { - "id": "07281559-0695-0216-0000-c269be8b7592", - "url": "https://dataforseo.com/apis" - } -] - removed
Input schema / properties / body / items / anyOfRemoved value: -[ - { - "example": [ - { - "id": "07281559-0695-0216-0000-c269be8b7592", - "url": "https://dataforseo.com/apis" - } - ], - "properties": { - "id": { - "description": "<em>ID of the task</em><br><strong>required field</strong><br>you can get this ID in the response of the <a href=\"/v3/on_page/task_post/\">Task POST</a> endpoint<br>example:<br>\"07131248-1535-0216-1000-17384017ad04\"", - "type": "string" - }, - "url": { - "description": "<em>page url</em><br><strong>required field</strong><br>the absolute URL of a page to request HTML<br><strong>Note:</strong> this field is optional if the task was set using the <a href=\"/v3/on_page/instant_pages/\">Instant Pages endpoint</a>", - "type": "string" - } - }, - "type": "object" - } -] - added
Input schema / properties / body / items / propertiesAdded value: +{ + "id": { + "description": "ID of the task required field you can get this ID in the response of the Task POST endpoint example: “07131248-1535-0216-1000-17384017ad04”", + "type": "string" + }, + "url": { + "description": "page url required field the absolute URL of a page to request HTML Note: this field is optional if the task was set using the Instant Pages endpoint", + "type": "string" + } +} - added
Input schema / properties / body / items / requiredAdded value: +[ + "id" +] - changed
Input schema / properties / body / items / typePrevious value: -[ - "object", - "null" -]New value: +"object" - changed
Input schema / requiredPrevious value: -[]New value: +[ + "body" +] - removed
Output schema / x-fastmcp-wrap-resultRemoved value: -true
- Changed
post_dataforseo_on_page_resources7 fields changed- removed
Input schema / properties / body / exampleRemoved value: -[ - { - "filters": [ - [ - "resource_type", - "=", - "image" - ], - "and", - [ - "size", - ">", - 100000 - ] - ], - "id": "07281559-0695-0216-0000-c269be8b7592", - "limit": 10, - "order_by": [ - "size,desc" - ] - } -] - removed
Input schema / properties / body / items / anyOfRemoved value: -[ - { - "example": [ - { - "filters": [ - [ - "resource_type", - "=", - "image" - ], - "and", - [ - "size", - ">", - 100000 - ] - ], - "id": "07281559-0695-0216-0000-c269be8b7592", - "limit": 10, - "order_by": [ - "size,desc" - ] - } - ], - "properties": { - "filters": { - "description": "<em>array of results filtering parameters</em><br>optional field<br><strong>you can add several filters at once (8 filters maximum)</strong><br>you should set a logical operator <code>and</code>, <code>or</code> between the conditions<br>the following operators are supported:<br><code>regex</code>, <code>not_regex</code>, <code><</code>, <code><=</code>, <code>></code>, <code>>=</code>, <code>=</code>, <code><></code>, <code>in</code>, <code>not_in</code>, <code>like</code>, <code>not_like</code><br>you can use the <code>%</code> operator with <code>like</code> and <code>not_like</code> to match any string of zero or more characters<br>example:<br><code>[\"resource_type\",\"=\",\"stylesheet\"]</code><p><code>[[\"resource_type\",\"=\",\"image\"],<br>\"and\",[\"checks.is_https\",\"=\",false]]</code><p><code>[[\"fetch_timing.duration_time\",\">\",1],\"and\",[[\"total_transfer_size\",\">\",100],\"or\",[\"checks.high_loading_time\",\"=\",true]]]</code><p>The full list of possible filters is available <a href=\"/v3/on_page/filters_and_thresholds/?bash\" rel=\"noopener noreferrer\" target=\"_blank\">by this link.</a>", - "items": { - "type": [ - "object", - "null" - ] - }, - "type": [ - "array", - "null" - ] - }, - "id": { - "description": "<em>ID of the task</em><br><strong>required field</strong><br>you can get this ID in the response of the <a href=\"/v3/on_page/task_post/\">Task POST</a> endpoint<br>example:<br>\"07131248-1535-0216-1000-17384017ad04\"", - "type": "string" - }, - "limit": { - "description": "<em>the maximum number of returned resources</em><br>optional field<br>default value: <code>100</code><br>maximum value: <code>1000</code>", - "type": [ - "integer", - "null" - ] - }, - "offset": { - "description": "<em>offset in the results array of returned resources</em><br>optional field<br>default value: <code>0</code><br>maximum value: <code>2000000</code><br>if you specify the <code>10</code> value, the first ten resources in the results array will be omitted and the data will be provided for the successive resources", - "type": [ - "integer", - "null" - ] - }, - "order_by": { - "description": "<em>results sorting rules</em><br>optional field<br>you can use the same values as in the <code>filters</code> array to sort the results<br>possible sorting types:<br><code>asc</code> - results will be sorted in the ascending order<br><code>desc</code> - results will be sorted in the descending order<br>you should use a comma to set up a sorting type<br>example:<br><code>[\"size,desc\"]</code><br><strong>note that you can set no more than three sorting rules in a single request</strong><br>you should use a comma to separate several sorting rules<br>example:<br><code>[\"size,desc\",\"fetch_timing.fetch_end,desc\"]</code>", - "items": { - "type": "string" - }, - "type": [ - "array", - "null" - ] - }, - "relevant_pages_filters": { - "description": "<em>filter the resources by relevant pages</em><br>optional field<br>you can use this field to obtain resources from pages matching to the defined parameters<br>you can apply the same filters here as available for the <a href=\"/v3/on_page/pages/\" rel=\"noopener noreferrer\" target=\"_blank\">pages endpoint</a><br><strong>you can add several filters at once (8 filters maximum)</strong><br>you should set a logical operator <code>and</code>, <code>or</code> between the conditions<br>the following operators are supported:<br><code>regex</code>, <code>not_regex</code>, <code><</code>, <code><=</code>, <code>></code>, <code>>=</code>, <code>=</code>, <code><></code>, <code>in</code>, <code>not_in</code>, <code>like</code>, <code>not_like</code><br>you can use the <code>%</code> operator with <code>like</code> and <code>not_like</code> to match any string of zero or more characters<br>example:<br><code>[\"checks.no_image_title\",\"=\",true]</code>", - "items": { - "type": "string" - }, - "type": [ - "array", - "null" - ] - }, - "search_after_token": { - "description": "<em>token for subsequent requests</em><br>optional field<br>provided in the identical filed of the response to each request;<br>use this parameter to avoid timeouts while trying to obtain over <code>20,000</code> results in a single request;<br>by specifying the unique <code>search_after_token</code> value from the response array, you will get the subsequent results of the initial task;<br><code>search_after_token</code> values are unique for each subsequent task ;<br><strong>Note:</strong> if the <code>search_after_token</code> is specified in the request, all other parameters should be identical to the previous request", - "type": [ - "string", - "null" - ] - }, - "tag": { - "description": "<em>user-defined task identifier</em><br>optional field<br><em>the character limit is 255</em><br>you can use this parameter to identify the task and match it with the result<br>you will find the specified <code>tag</code> value in the <code>data</code> object of the response", - "type": [ - "string", - "null" - ] - }, - "url": { - "description": "<em>page URL</em><br>optional field<br>specify this field if you want to get the resources for a specific page<br>note that to obtain resource's <code>meta</code> from a particular URL, you should specify the URL in this field;<br>if you do not indicate a <code>url</code> when setting a task, resource's <code>meta</code> in the results will be returned based on the data from the page where our crawler first saw the resource", - "type": [ - "string", - "null" - ] - } - }, - "type": "object" - } -] - added
Input schema / properties / body / items / propertiesAdded value: +{ + "filters": { + "description": "array of results filtering parameters optional field you can add several filters at once (8 filters maximum) you should set a logical operator and, or between the conditions the following operators are supported: regex, not_regex, , , >, >=, =, , in, not_in, like, not_like you can use the % operator with like and not_like to match any string of zero or more characters example: [\"resource_type\",\"=\",\"stylesheet\"] [[\"resource_type\",\"=\",\"image\"], \"and\",[\"checks.is_https\",\"=\",false]] [[\"fetch_timing.duration_time\",\">\",1],\"and\",[[\"total_transfer_size\",\">\",100],\"or\",[\"checks.high_loading_time\",\"=\",true]]] The full list of possible filters is available by this link.", + "items": {}, + "type": "array" + }, + "id": { + "description": "ID of the task required field you can get this ID in the response of the Task POST endpoint example: “07131248-1535-0216-1000-17384017ad04”", + "type": "string" + }, + "limit": { + "description": "the maximum number of returned resources optional field default value: 100 maximum value: 1000", + "type": "integer" + }, + "offset": { + "description": "offset in the results array of returned resources optional field default value: 0 maximum value: 2000000 if you specify the 10 value, the first ten resources in the results array will be omitted and the data will be provided for the successive resources", + "type": "integer" + }, + "order_by": { + "description": "results sorting rules optional field you can use the same values as in the filters array to sort the results possible sorting types: asc – results will be sorted in the ascending order desc – results will be sorted in the descending order you should use a comma to set up a sorting type example: [\"size,desc\"] note that you can set no more than three sorting rules in a single request you should use a comma to separate several sorting rules example: [\"size,desc\",\"fetch_timing.fetch_end,desc\"]", + "items": { + "type": "string" + }, + "type": "array" + }, + "relevant_pages_filters": { + "description": "filter the resources by relevant pages optional field you can use this field to obtain resources from pages matching to the defined parameters you can apply the same filters here as available for the pages endpoint you can add several filters at once (8 filters maximum) you should set a logical operator and, or between the conditions the following operators are supported: regex, not_regex, , , >, >=, =, , in, not_in, like, not_like you can use the % operator with like and not_like to match any string of zero or more characters example: [\"checks.no_image_title\",\"=\",true]", + "items": {}, + "type": "array" + }, + "search_after_token": { + "description": "token for subsequent requests optional field provided 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", + "type": "string" + }, + "tag": { + "description": "user-defined task identifier optional field the character limit is 255 you can use this parameter to identify the task and match it with the result you will find the specified tag value in the data object of the response", + "type": "string" + }, + "url": { + "description": "page URL optional field specify this field if you want to get the resources for a specific page note that to obtain resource’s meta from a particular URL, you should specify the URL in this field; if you do not indicate a url when setting a task, resource’s meta in the results will be returned based on the data from the page where our crawler first saw the resource", + "type": "string" + } +} - added
Input schema / properties / body / items / requiredAdded value: +[ + "id" +] - changed
Input schema / properties / body / items / typePrevious value: -[ - "object", - "null" -]New value: +"object" - changed
Input schema / requiredPrevious value: -[]New value: +[ + "body" +] - removed
Output schema / x-fastmcp-wrap-resultRemoved value: -true
- Changed
post_dataforseo_on_page_submit7 fields changed- removed
Input schema / properties / body / exampleRemoved value: -[ - { - "custom_js": "meta = {}; meta.url = document.URL; meta;", - "enable_javascript": true, - "load_resources": true, - "max_crawl_pages": 10, - "pingback_url": "https://your-server.com/pingscript?id=$id&tag=$tag", - "tag": "some_string_123", - "target": "dataforseo.com" - } -] - removed
Input schema / properties / body / items / anyOfRemoved value: -[ - { - "example": [ - { - "custom_js": "meta = {}; meta.url = document.URL; meta;", - "enable_javascript": true, - "load_resources": true, - "max_crawl_pages": 10, - "pingback_url": "https://your-server.com/pingscript?id=$id&tag=$tag", - "tag": "some_string_123", - "target": "dataforseo.com" - } - ], - "properties": { - "accept_language": { - "description": "<em>language header for accessing the website</em><br>optional field<br>all locale formats are supported (xx, xx-XX, xxx-XX, etc.)<br><strong>Note:</strong> if you do not specify this parameter, some websites may deny access; in this case, pages will be returned with the <code>\"type\":\"broken</code> in the response array", - "type": [ - "string", - "null" - ] - }, - "allow_subdomains": { - "description": "<em>include pages on subdomains</em><br>optional field<br>set to <code>true</code> if you want to crawl all subdomains of a target website<br>default value: <code>false</code>", - "type": [ - "boolean", - "null" - ] - }, - "allowed_subdomains": { - "description": "<em>subdomains to crawl</em><br>optional field<br>specify subdomains that you want to crawl<br>example: <code>[\"blog.site.com\", \"my.site.com\", \"shop.site.com\"]</code><br><strong>Note:</strong> to use this parameter, the <code>allow_subdomains</code> parameter should be set to <code>false</code>;<br>otherwise, the content of <code>allowed_subdomains</code> field will be ignored and the results will be returned for all subdomains", - "items": { - "type": "string" - }, - "type": [ - "array", - "null" - ] - }, - "browser_preset": { - "description": "<em>preset for browser screen parameters</em><br>optional field<br>if you use this field, you don't need to indicate <code>browser_screen_width</code>, <code>browser_screen_height</code>, <code>browser_screen_scale_factor</code>possible values:<br><code>desktop</code>, <code>mobile</code>, <code>tablet</code><code>desktop</code> preset will apply the following values:<code>browser_screen_width: 1920</code><br><code>browser_screen_height: 1080</code><br><code>browser_screen_scale_factor: 1</code><code>mobile</code> preset will apply the following values:<code>browser_screen_width: 390</code><br><code>browser_screen_height: 844</code><br><code>browser_screen_scale_factor: 3</code><code>tablet</code> preset will apply the following values:<code>browser_screen_width: 1024</code><br><code>browser_screen_height: 1366</code><br><code>browser_screen_scale_factor: 2</code><br><strong>Note:</strong> to use this parameter, set <code>enable_javascript</code> or <code>enable_browser_rendering</code> to <code>true</code>", - "type": [ - "string", - "null" - ] - }, - "browser_screen_height": { - "description": "<em>browser screen height</em><br>optional field<br>you can set a custom browser screen height to perform an audit for a particular device;<br>if you use this field, you don't need to indicate <code>browser_preset</code> as it will be ignored;<br><strong>Note:</strong> to use this parameter, set <code>enable_javascript</code> or <code>enable_browser_rendering</code> to <code>true</code>minimum value, in pixels: <code>240</code><br>maximum value, in pixels: <code>9999</code>", - "type": [ - "integer", - "null" - ] - }, - "browser_screen_scale_factor": { - "description": "<em>browser screen scale factor</em><br>optional field<br>you can set a custom browser screen resolution ratio to perform audit for a particular device;<br>if you use this field, you don't need to indicate <code>browser_preset</code> as it will be ignored;<br><strong>Note:</strong> to use this parameter, set <code>enable_javascript</code> or <code>enable_browser_rendering</code> to <code>true</code>minimum value: <code>0.5</code><br>maximum value: <code>3</code>", - "type": [ - "number", - "null" - ] - }, - "browser_screen_width": { - "description": "<em>browser screen width</em><br>optional field<br>you can set a custom browser screen width to perform audit for a particular device;<br>if you use this field, you don't need to indicate <code>browser_preset</code> as it will be ignored;<br><strong>Note:</strong> to use this parameter, set <code>enable_javascript</code> or <code>enable_browser_rendering</code> to <code>true</code>minimum value, in pixels: <code>240</code><br>maximum value, in pixels: <code>9999</code>", - "format": "int64", - "type": [ - "integer", - "null" - ] - }, - "calculate_keyword_density": { - "description": "<em>calculate keyword density for the target domain</em><br>optional field<br>set to <code>true</code> if you want to calculate keyword density for website pages<br>default value: <code>false</code><br><strong>Note:</strong> if you use this parameter, additional charges will apply; learn more about the cost of tasks with this parameter <a href=\"https://dataforseo.com/help-center/cost-of-onpage-api-parameters\" target=\"_blank\" rel=\"noopener noreferrer\">in our help article</a><br>once the crawl is completed, you can obtain keyword density values with <a href=\"/v3/on_page/keyword_density?bash\" target=\"_blank\" rel=\"noopener noreferrer\">the Keyword Density endpoint</a>", - "type": [ - "boolean", - "null" - ] - }, - "check_spell": { - "description": "<em>check spelling</em><br>optional field<br>set to <code>true</code> to check spelling on a website using <a href=\"http://hunspell.github.io/\" target=\"_blank\" rel=\"noopener noreferrer\">Hunspell</a> library<br>default value: <code>false</code>", - "type": [ - "boolean", - "null" - ] - }, - "check_spell_exceptions": { - "description": "<em>words excluded from spell check</em><br>optional field<br>specify the words that you want to exclude from spell check<br>maximum word length: 100 characters<br>maximum amount of words: 1000<br>example: <code>\"SERP\", \"minifiers\", \"JavaScript\"</code>", - "items": { - "type": "string" - }, - "type": [ - "array", - "null" - ] - }, - "check_spell_language": { - "description": "<em>language of the spell check</em><br>optional field<br>supported languages: 'hy', 'eu', 'bg', 'ca', 'hr', 'cs', 'da', 'nl', 'en', 'eo', 'et', 'fo', 'fa', 'fr', 'fy', 'gl', 'ka', 'de', 'el', 'he', 'hu', 'is', 'ia', 'ga', 'it', 'rw', 'la', 'lv', 'lt', 'mk', 'mn', 'ne', 'nb', 'nn', 'pl', 'pt', 'ro', 'gd', 'sr', 'sk', 'sl', 'es', 'sv', 'tr', 'tk', 'uk', 'vi'<br><strong>Note:</strong> if no language is specified, it will be set automatically based on page content", - "type": [ - "string", - "null" - ] - }, - "checks_threshold": { - "additionalProperties": { - "format": "int64", - "type": [ - "integer", - "null" - ] - }, - "description": "<em>custom threshold values for checks</em><br>optional field<br>you can specify custom threshold values for the parameters included in the <code>checks</code> object of OnPage API responses;<br><strong>Note:</strong> only integer threshold values can be modified;<br>for example, the <code>high_loading_time</code> and <code>large_page_size</code> parameters are set to 3 seconds and 1 megabyte respectively by default;<br>if you want to change these thresholds to 1 second and 1000 kbytes, use the following snippet:<br>`\"checks_threshold\": {<br>\"high_loading_time\": 1,<br>\"large_page_size\": 1000<br>}`<br>available customizable parameters with default values:<br>`\"title_too_short\", default value: 30, type: \"int\"<br>\"title_too_long\", default value: 65, type: \"int\"<br>\"small_page_size\", default value: 1024, type: \"int\"<br>\"large_page_size\", default value: 1048576 (1024 * 1024), type: \"int\"<br>\"low_character_count\", default value: 1024, type: \"int\"<br>\"high_character_count\", default value: 256000 (250 * 1024), type: \"int\"<br>\"low_content_rate\", default value: 0.1, type: \"float\"<br>\"high_content_rate\", default value: 0.9, type: \"float\"<br>\"high_loading_time\", default value: 3000, type: \"int\"<br>\"high_waiting_time\", default value: 1500, type: \"int\"<br>\"low_readability_rate\", default value: 15.0, type: \"float\"<br>\"irrelevant_description\", default value: 0.2, type: \"float\"<br>\"irrelevant_title\", default value: 0.3, type: \"float\"<br>\"irrelevant_meta_keywords\", default value: 0.6, type: \"float\"`", - "type": [ - "object", - "null" - ] - }, - "crawl_delay": { - "description": "<em>delay between hits, ms</em><br>optional field<br>the custom delay between crawler hits to the server<br>default value: <code>2000</code>", - "type": [ - "integer", - "null" - ] - }, - "crawl_sitemap_only": { - "description": "<em>crawl only pages indicated in the sitemap</em><br>optional field<br>set to <code>true</code> if you want to crawl only the pages indicated in the sitemap<br>if you set this parameter to <code>true</code> and do not specify <code>custom_sitemap</code>, we will crawl the default sitemap<br>default value: <code>false</code><br><strong>Note:</strong> if you want to use this parameter, <code>respect_sitemap</code> should be <code>true</code>", - "type": [ - "boolean", - "null" - ] - }, - "custom_js": { - "description": "<em>custom javascript</em><br>optional field<br><strong>Note</strong> that the execution time for the script you enter here should be 700 ms maximum, for example, you can use the following JS snippet to check if the website contains Google Tag Manager as a <code>scr</code> attribute:<br><code>let meta = { haveGoogleAnalytics: false, haveTagManager: false };rnfor (var i = 0; i < document.scripts.length; i++) {rn let src = document.scripts[i].getAttribute(\"src\");rn if (src != undefined) {rn if (src.indexOf(\"analytics.js\") >= 0)rn meta.haveGoogleAnalytics = true;rntif (src.indexOf(\"gtm.js\") >= 0)rn meta.haveTagManager = true;rn }rn}rnmeta;</code>the returned value depends on what you specified in this field. For instance, if you specify the following script:<br>`meta = {}; meta.url = document.URL; meta.test = 'test'; meta;`<br>as a response you will receive the following data:<br>`\"custom_js_response\": {<br>\"url\": \"https://dataforseo.com/\",<br>\"test\": \"test\"<br>}`<br><strong>Note:</strong> the length of the script you enter must be no more than 2000 characters", - "type": [ - "string", - "null" - ] - }, - "custom_robots_txt": { - "description": "<em>custom robots.txt settings</em><br>optional field<br>example: <code>Disallow: /directory1/</code>", - "type": [ - "string", - "null" - ] - }, - "custom_sitemap": { - "description": "<em>custom sitemap url</em><br>optional field<br>the URL of the page where the alternative sitemap is located<br><strong>Note:</strong> if you want to use this parameter, <code>respect_sitemap</code> should be <code>true</code>", - "type": [ - "string", - "null" - ] - }, - "custom_user_agent": { - "description": "<em>custom user agent</em><br>optional field<br>custom user agent for crawling a website<br>example: <code>Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36<br></code><br>default value: <code>Mozilla/5.0 (compatible; RSiteAuditor)</code>", - "type": [ - "string", - "null" - ] - }, - "disable_cookie_popup": { - "description": "<em>disable the cookie popup</em><br>optional field<br>set to <code>true</code> if you want to disable the popup requesting cookie consent from the user;<br>default value:<br><code>false</code>", - "type": [ - "boolean", - "null" - ] - }, - "disable_page_checks": { - "description": "<em>prevent certain page checks from running</em><br>optional field<br>specify certain <code>checks</code> to prevent them from running and impacting the <code>onpage_score</code>example:<br><code>\"disable_page_checks\": [\"is_5xx_code\", \"is_4xx_code\"]</code>", - "items": { - "type": "string" - }, - "type": [ - "array", - "null" - ] - }, - "disable_sitewide_checks": { - "description": "<em>prevent certain sitewide checks from running</em><br>optional field<br>specify the following <code>checks</code> to prevent them from running on the <code>target</code> website:<br><code>\"test_page_not_found\"</code><br><code>\"test_canonicalization\"</code><br><code>\"test_https_redirect\"</code><br><code>\"test_directory_browsing\"</code>example:<br><code>\"disable_sitewide_checks\": [\"test_directory_browsing\", \"test_page_not_found\"]</code>learn more on <a href=\"https://dataforseo.com/help-center/how-to-disable-sitewide-checks-in-onpage-api\" target=\"_blank\" rel=\"noopener noreferrer\">our help center</a>", - "items": { - "type": "string" - }, - "type": [ - "array", - "null" - ] - }, - "disallowed_subdomains": { - "description": "<em>subdomains not to crawl</em><br>optional field<br>specify subdomains that you don't want to crawl<br>example: <code>[\"status.site.com\", \"docs.site.com\"]</code><br><strong>Note:</strong> to use this parameter, the <code>allow_subdomains</code> parameter should be set to <code>true</code>", - "items": { - "type": "string" - }, - "type": [ - "array", - "null" - ] - }, - "enable_browser_rendering": { - "description": "<em>emulate browser rendering to measure Core Web Vitals</em><br>optional field<br>by using this parameter you will be able to emulate a browser when loading a web page;<br><code>enable_browser_rendering</code> loads styles, images, fonts, animations, videos, and other resources on a page;<br>default value: <code>false</code><br>set to <code>true</code> to obtain Core Web Vitals (FID, CLS, LCP) metrics in the response;<br><strong>if you use this field, <code>enable_javascript</code>, and <code>load_resources</code> parameters must be set to <code>true</code></strong><br><strong>Note:</strong> if you use this parameter, additional charges will apply; learn more about the cost of tasks with this parameter <a href=\"https://dataforseo.com/help-center/cost-of-onpage-api-parameters\" target=\"_blank\" rel=\"noopener noreferrer\">in our help article</a>; the cost can be calculated on the <a href=\"https://dataforseo.com/pricing/on-page/onpage-api\" target=\"_blank\" rel=\"noopener noreferrer\">Pricing Page</a>", - "type": [ - "boolean", - "null" - ] - }, - "enable_content_parsing": { - "description": "<em>parse content on crawled pages</em><br>optional field<br>set to <code>true</code> to use the <a href=\"/v3/on_page/content_parsing/live/\" target=\"_blank\" rel=\"noopener noreferrer\">OnPage Content Parsing endpoint</a><br>default value: <code>false</code>", - "type": [ - "boolean", - "null" - ] - }, - "enable_javascript": { - "description": "<em>load javascript on a page</em><br>optional field<br>set to <code>true</code> if you want to load the scripts available on a page<br>default value: <code>false</code><br><strong>Note:</strong> if you use this parameter, additional charges will apply; learn more about the cost of tasks with this parameter <a href=\"https://dataforseo.com/help-center/cost-of-onpage-api-parameters\" target=\"_blank\" rel=\"noopener noreferrer\">in our help article</a>; the cost can be calculated on the <a href=\"https://dataforseo.com/pricing/on-page/onpage-api\" target=\"_blank\" rel=\"noopener noreferrer\">Pricing Page</a>", - "type": [ - "boolean", - "null" - ] - }, - "enable_www_redirect_check": { - "description": "<em>check if the domain implemented the www redirection</em><br>optional field<br>set to <code>true</code> if you want to check if the requested domain implemented the www to non-www or non-www to www redirect;<br>default value: <code>false</code>", - "type": [ - "boolean", - "null" - ] - }, - "enable_xhr": { - "description": "<em>enable XMLHttpRequest on a page</em><br>optional field<br>set to <code>true</code> if you want our crawler to request data from a web server using the XMLHttpRequest object<br>default value: <code>false</code>;if you use this field, <code>enable_javascript</code> must be set to <code>true</code>;", - "type": [ - "boolean", - "null" - ] - }, - "force_sitewide_checks": { - "description": "<em>enable sitewide checks when crawling a single page</em><br>optional field<br>set to <code>true</code> to get data on sitewide checks when crawling a single page;<br>default value: <code>false</code>", - "type": [ - "boolean", - "null" - ] - }, - "load_resources": { - "description": "<em>load resources</em><br>optional field<br>set to <code>true</code> if you want to load image, stylesheets, scripts, and broken resources<br>default value: <code>false</code><br><strong>Note:</strong> if you use this parameter, additional charges will apply; learn more about the cost of tasks with this parameter <a href=\"https://dataforseo.com/help-center/cost-of-onpage-api-parameters\" target=\"_blank\" rel=\"noopener noreferrer\">in our help article</a>; the cost can be calculated on the <a href=\"https://dataforseo.com/pricing/on-page/onpage-api\" target=\"_blank\" rel=\"noopener noreferrer\">Pricing Page</a>", - "type": [ - "boolean", - "null" - ] - }, - "max_crawl_depth": { - "description": "<em>crawl depth</em><br>optional field<br>the linking depth of the pages to crawl;<br>for example, starting page of the crawl is level 0, pages that have links from that page are level 1, etc.", - "type": [ - "integer", - "null" - ] - }, - "max_crawl_pages": { - "description": "<em>crawled pages limit</em><br><strong>required field</strong><br>the number of pages to crawl on the specified domain<br><strong>Note:</strong><br>if you set <code>max_crawl_pages</code> to 1 and do not specify <code>start_url</code> or set a homepage in it, the following sitewide checks will be disabled:<br><code>test_canonicalization</code>, <code>enable_www_redirect_check</code>, <code>test_hidden_server_signature</code>, <code>test_page_not_found</code>, <code>test_directory_browsing</code>, <code>test_https_redirect</code><br>to enable them anyway, set <code>force_sitewide_checks</code> to <code>true</code>if you set <code>max_crawl_pages</code> to 1 and specify <code>start_url</code> other than a homepage, all sitewide checks will be disabled;<br>to enable them anyway, set <code>force_sitewide_checks</code> to <code>true</code>", - "type": "integer" - }, - "pingback_url": { - "description": "<em>notification URL of a completed task</em><br>optional field<br>when a task is completed we will notify you by GET request sent to the URL you have specified<br>you can use the ‘$id’ string as a <code>$id</code> variable and ‘$tag’ as urlencoded <code>$tag</code> variable. We will set the necessary values before sending the request.<br>example:<br><code>http://your-server.com/pingscript?id=$id</code><br><code>http://your-server.com/pingscript?id=$id&tag=$tag</code><br><strong>Note:</strong> special characters in <code>pingback_url</code> will be urlencoded;<br>i.a., the <code>#</code> character will be encoded into <code>%23</code><p>learn more on our <a href=\"https://dataforseo.com/help-center/pingbacks-postbacks-with-dataforseo-api\" target=\"_blank\" rel=\"noopener noreferrer\">Help Center</a>", - "type": [ - "string", - "null" - ] - }, - "priority_urls": { - "description": "<em>urls to be crawled bypassing the queue</em><br>optional field<br>URLs specified in this array will be crawled in the first instance, bypassing the crawling queue;<br><strong>Note:</strong> you should specify the absolute URL;<br>you can specify up to <strong>20 URLs</strong>;<br>all URLs in the array must belong to the <code>target</code> domain;<br>subdomains will be ignored unless the <code>allow_subdomains</code> parameter is set to <code>true</code>example:<br>`\"priority_urls\": [<br>\"https://dataforseo.com/apis/serp-api\",<br>\"https://dataforseo.com/contact\"<br>]`", - "items": { - "type": "string" - }, - "type": [ - "array", - "null" - ] - }, - "respect_sitemap": { - "description": "<em>respect sitemap when crawling</em><br>optional field<br>set to <code>true</code> if you want to follow the order of pages indicated in the primary sitemap when crawling;<br>default value: <code>false</code><br><strong>Note:</strong> if set to <code>true</code>, the <code>click_depth</code> value in the API response will equal <code>0</code>;<br>the <code>max_crawl_depth</code> field of the request will be ignored, you can specify the number of pages to crawl using the <code>max_crawl_pages</code> parameter", - "type": [ - "boolean", - "null" - ] - }, - "return_despite_timeout": { - "description": "<em>return data on pages despite the timeout error</em><br>optional field<br>if <code>true</code>, the data will be provided on pages that failed to load within 120 seconds and responded with a timeout error;<br>default value: <code>false</code>", - "type": [ - "boolean", - "null" - ] - }, - "robots_txt_merge_mode": { - "description": "<em>merge with or override robots.txt settings</em><br>optional field<br>possible values: <code>merge</code>, <code>override</code>;<br>set to <code>override</code> if you want to ignore website crawling restrictions and other robots.txt settings<br>default value: <code>merge</code>;<br><strong>Note:</strong> if set to <code>override</code>, specify the <code>custom_robots_txt</code> parameter", - "type": [ - "string", - "null" - ] - }, - "start_url": { - "description": "<em>the first url to crawl </em><br>optional field<br><strong>Note:</strong> you should specify an absolute URL<br>if you want to crawl a single page, specify its URL in this field and additionally set the <code>max_crawl_pages</code> parameter to <code>1</code><br>you can also use the <a href=\"/v3/on_page/instant_pages/?bash\" target=\"_blank\" rel=\"noopener noreferrer\">live Instant Pages endpoint</a> to get page-specific data", - "type": [ - "string", - "null" - ] - }, - "store_raw_html": { - "description": "<em>store HTML of crawled pages</em><br>optional field<br>set to <code>true</code> if you want to get the HTML of the page using the <a href=\"/v3/on_page/raw_html/\" target=\"_blank\" rel=\"noopener noreferrer\">OnPage Raw HTML endpoint</a><br>default value: <code>false</code>", - "type": [ - "boolean", - "null" - ] - }, - "support_cookies": { - "description": "<em>support cookies on crawled pages</em><br>optional field<br>set to <code>true</code> to support cookies when crawling the pages<br>default value: <code>false</code>", - "type": [ - "boolean", - "null" - ] - }, - "switch_pool": { - "description": "<em>switch proxy pool</em><br>optional field<br>if <code>true</code>, additional proxy pools will be used to obtain the requested data;<br>the parameter can be used if a multitude of tasks is set simultaneously, resulting in occasional <code>rate-limit</code> and/or <code>site_unreachable</code> errors", - "type": [ - "boolean", - "null" - ] - }, - "tag": { - "description": "<em>user-defined task identifier</em><br>optional field<br><em>the character limit is 255</em><br>you can use this parameter to identify the task and match it with the result<br>you will find the specified <code>tag</code> value in the <code>data</code> object of the response", - "type": [ - "string", - "null" - ] - }, - "target": { - "description": "<em>target domain</em><br><strong>required field</strong><br>domain name should be specified without <code>https://</code> and <code>www.</code><br>if you specify the page URL, the results will be returned for the domain included in the URL", - "type": "string" - }, - "validate_micromarkup": { - "description": "<em>enable microdata validation</em><br>optional field<br>set to <code>true</code> if you want to use the <a href=\"/v3/on_page/microdata/\" target=\"_blank\" rel=\"noopener noreferrer\">OnPage API Microdata endpoint</a><br>default value: <code>false</code>", - "type": [ - "boolean", - "null" - ] - } - }, - "type": "object" - } -] - added
Input schema / properties / body / items / propertiesAdded value: +{ + "accept_language": { + "description": "language header for accessing the website optional field all locale formats are supported (xx, xx-XX, xxx-XX, etc.) Note: if you do not specify this parameter, some websites may deny access; in this case, pages will be returned with the \"type\":\"broken in the response array", + "type": "string" + }, + "allow_subdomains": { + "description": "include pages on subdomains optional field set to true if you want to crawl all subdomains of a target website default value: false", + "type": "boolean" + }, + "allowed_subdomains": { + "description": "subdomains to crawl optional field specify subdomains that you want to crawl example: [\"blog.site.com\", \"my.site.com\", \"shop.site.com\"] Note: to use this parameter, the allow_subdomains parameter should be set to false; otherwise, the content of allowed_subdomains field will be ignored and the results will be returned for all subdomains", + "items": { + "type": "string" + }, + "type": "array" + }, + "browser_preset": { + "description": "preset for browser screen parameters optional field if you use this field, you don’t need to indicate browser_screen_width, browser_screen_height, browser_screen_scale_factorpossible values: desktop, mobile, tabletdesktop preset will apply the following values:browser_screen_width: 1920 browser_screen_height: 1080 browser_screen_scale_factor: 1mobile preset will apply the following values:browser_screen_width: 390 browser_screen_height: 844 browser_screen_scale_factor: 3tablet preset will apply the following values:browser_screen_width: 1024 browser_screen_height: 1366 browser_screen_scale_factor: 2 Note: to use this parameter, set enable_javascript or enable_browser_rendering to true", + "type": "string" + }, + "browser_screen_height": { + "description": "browser screen height optional field you can set a custom browser screen height to perform an audit for a particular device; if you use this field, you don’t need to indicate browser_preset as it will be ignored; Note: to use this parameter, set enable_javascript or enable_browser_rendering to trueminimum value, in pixels: 240 maximum value, in pixels: 9999", + "type": "integer" + }, + "browser_screen_scale_factor": { + "description": "browser screen scale factor optional field you can set a custom browser screen resolution ratio to perform audit for a particular device; if you use this field, you don’t need to indicate browser_preset as it will be ignored; Note: to use this parameter, set enable_javascript or enable_browser_rendering to trueminimum value: 0.5 maximum value: 3", + "type": "number" + }, + "browser_screen_width": { + "description": "browser screen width optional field you can set a custom browser screen width to perform audit for a particular device; if you use this field, you don’t need to indicate browser_preset as it will be ignored; Note: to use this parameter, set enable_javascript or enable_browser_rendering to trueminimum value, in pixels: 240 maximum value, in pixels: 9999", + "type": "integer" + }, + "calculate_keyword_density": { + "description": "calculate keyword density for the target domain optional field set to true if you want to calculate keyword density for website pages default value: false Note: if you use this parameter, additional charges will apply; learn more about the cost of tasks with this parameter in our help article once the crawl is completed, you can obtain keyword density values with the Keyword Density endpoint", + "type": "boolean" + }, + "check_spell": { + "description": "check spelling optional field set to true to check spelling on a website using Hunspell library default value: false", + "type": "boolean" + }, + "check_spell_exceptions": { + "description": "words excluded from spell check optional field specify the words that you want to exclude from spell check maximum word length: 100 characters maximum amount of words: 1000 example: \"SERP\", \"minifiers\", \"JavaScript\"", + "items": { + "type": "string" + }, + "type": "array" + }, + "check_spell_language": { + "description": "language of the spell check optional field supported languages: ‘hy’, ‘eu’, ‘bg’, ‘ca’, ‘hr’, ‘cs’, ‘da’, ‘nl’, ‘en’, ‘eo’, ‘et’, ‘fo’, ‘fa’, ‘fr’, ‘fy’, ‘gl’, ‘ka’, ‘de’, ‘el’, ‘he’, ‘hu’, ‘is’, ‘ia’, ‘ga’, ‘it’, ‘rw’, ‘la’, ‘lv’, ‘lt’, ‘mk’, ‘mn’, ‘ne’, ‘nb’, ‘nn’, ‘pl’, ‘pt’, ‘ro’, ‘gd’, ‘sr’, ‘sk’, ‘sl’, ‘es’, ‘sv’, ‘tr’, ‘tk’, ‘uk’, ‘vi’ Note: if no language is specified, it will be set automatically based on page content", + "type": "string" + }, + "checks_threshold": { + "description": "custom threshold values for checks optional field you can specify custom threshold values for the parameters included in the checks object of OnPage API responses; Note: only integer threshold values can be modified; for example, the high_loading_time and large_page_size parameters are set to 3 seconds and 1 megabyte respectively by default; if you want to change these thresholds to 1 second and 1000 kbytes, use the following snippet: \"checks_threshold\": { \"high_loading_time\": 1, \"large_page_size\": 1000 }available customizable parameters with default values: \"title_too_short\", default value: 30, type: \"int\" \"title_too_long\", default value: 65, type: \"int\" \"small_page_size\", default value: 1024, type: \"int\" \"large_page_size\", default value: 1048576 (1024 * 1024), type: \"int\" \"low_character_count\", default value: 1024, type: \"int\" \"high_character_count\", default value: 256000 (250 * 1024), type: \"int\" \"low_content_rate\", default value: 0.1, type: \"float\" \"high_content_rate\", default value: 0.9, type: \"float\" \"high_loading_time\", default value: 3000, type: \"int\" \"high_waiting_time\", default value: 1500, type: \"int\" \"low_readability_rate\", default value: 15.0, type: \"float\" \"irrelevant_description\", default value: 0.2, type: \"float\" \"irrelevant_title\", default value: 0.3, type: \"float\" \"irrelevant_meta_keywords\", default value: 0.6, type: \"float\"", + "type": "object" + }, + "crawl_delay": { + "description": "delay between hits, ms optional field the custom delay between crawler hits to the server default value: 2000", + "type": "integer" + }, + "crawl_sitemap_only": { + "description": "crawl only pages indicated in the sitemap optional field set to true if you want to crawl only the pages indicated in the sitemap if you set this parameter to true and do not specify custom_sitemap, we will crawl the default sitemap default value: false Note: if you want to use this parameter, respect_sitemap should be true", + "type": "boolean" + }, + "custom_js": { + "description": "custom javascript optional field Note that the execution time for the script you enter here should be 700 ms maximum, for example, you can use the following JS snippet to check if the website contains Google Tag Manager as a scr attribute: let meta = { haveGoogleAnalytics: false, haveTagManager: false };rnfor (var i = 0; i < document.scripts.length; i++) {rn let src = document.scripts[i].getAttribute(\"src\");rn if (src!= undefined) {rn if (src.indexOf(\"analytics.js\") >= 0)rn meta.haveGoogleAnalytics = true;rntif (src.indexOf(\"gtm.js\") >= 0)rn meta.haveTagManager = true;rn }rn}rnmeta;the returned value depends on what you specified in this field. For instance, if you specify the following script: `meta = {}; meta.url = document.URL; meta.test = 'test'; meta;` as a response you will receive the following data: `\"custom_js_response\": { \"url\": \"https://dataforseo.com/\", \"test\": \"test\" }` Note: the length of the script you enter must be no more than 2000 characters", + "type": "string" + }, + "custom_robots_txt": { + "description": "custom robots.txt settings optional field example: Disallow: /directory1/", + "type": "string" + }, + "custom_sitemap": { + "description": "custom sitemap url optional field the URL of the page where the alternative sitemap is located Note: if you want to use this parameter, respect_sitemap should be true", + "type": "string" + }, + "custom_user_agent": { + "description": "custom user agent optional field custom user agent for crawling a website example: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36 default value: Mozilla/5.0 (compatible; RSiteAuditor)", + "type": "string" + }, + "disable_cookie_popup": { + "description": "disable the cookie popup optional field set to true if you want to disable the popup requesting cookie consent from the user; default value: false", + "type": "boolean" + }, + "disable_page_checks": { + "description": "prevent certain page checks from running optional field specify certain checks to prevent them from running and impacting the onpage_scoreexample: \"disable_page_checks\": [\"is_5xx_code\", \"is_4xx_code\"]", + "items": { + "type": "string" + }, + "type": "array" + }, + "disable_sitewide_checks": { + "description": "prevent certain sitewide checks from running optional field specify the following checks to prevent them from running on the target website: \"test_page_not_found\" \"test_canonicalization\" \"test_https_redirect\" \"test_directory_browsing\"example: \"disable_sitewide_checks\": [\"test_directory_browsing\", \"test_page_not_found\"]learn more on our help center", + "items": { + "type": "string" + }, + "type": "array" + }, + "disallowed_subdomains": { + "description": "subdomains not to crawl optional field specify subdomains that you don’t want to crawl example: [\"status.site.com\", \"docs.site.com\"] Note: to use this parameter, the allow_subdomains parameter should be set to true", + "items": { + "type": "string" + }, + "type": "array" + }, + "enable_browser_rendering": { + "description": "emulate browser rendering to measure Core Web Vitals optional field by using this parameter you will be able to emulate a browser when loading a web page; enable_browser_rendering loads styles, images, fonts, animations, videos, and other resources on a page; default value: false set to true to obtain Core Web Vitals (FID, CLS, LCP) metrics in the response; if you use this field, enable_javascript, and load_resources parameters must be set to true Note: if you use this parameter, additional charges will apply; learn more about the cost of tasks with this parameter in our help article", + "type": "boolean" + }, + "enable_content_parsing": { + "description": "parse content on crawled pages optional field set to true to use the OnPage Content Parsing endpoint default value: false", + "type": "boolean" + }, + "enable_javascript": { + "description": "load javascript on a page optional field set to true if you want to load the scripts available on a page default value: false Note: if you use this parameter, additional charges will apply; learn more about the cost of tasks with this parameter in our help article", + "type": "boolean" + }, + "enable_www_redirect_check": { + "description": "check if the domain implemented the www redirection optional field set to true if you want to check if the requested domain implemented the www to non-www or non-www to www redirect; default value: false", + "type": "boolean" + }, + "enable_xhr": { + "description": "enable XMLHttpRequest on a page optional field set to true if you want our crawler to request data from a web server using the XMLHttpRequest object default value: false;if you use this field, enable_javascript must be set to true;", + "type": "boolean" + }, + "force_sitewide_checks": { + "description": "enable sitewide checks when crawling a single page optional field set to true to get data on sitewide checks when crawling a single page; default value: false", + "type": "boolean" + }, + "load_resources": { + "description": "load resources optional field set to true if you want to load image, stylesheets, scripts, and broken resources default value: false Note: if you use this parameter, additional charges will apply; learn more about the cost of tasks with this parameter in our help article", + "type": "boolean" + }, + "max_crawl_depth": { + "description": "crawl depth optional field the linking depth of the pages to crawl; for example, starting page of the crawl is level 0, pages that have links from that page are level 1, etc.", + "type": "integer" + }, + "max_crawl_pages": { + "description": "crawled pages limit required field the number of pages to crawl on the specified domain Note: if you set max_crawl_pages to 1 and do not specify start_url or set a homepage in it, the following sitewide checks will be disabled: test_canonicalization, enable_www_redirect_check, test_hidden_server_signature, test_page_not_found, test_directory_browsing, test_https_redirect to enable them anyway, set force_sitewide_checks to trueif you set max_crawl_pages to 1 and specify start_url other than a homepage, all sitewide checks will be disabled; to enable them anyway, set force_sitewide_checks to true", + "type": "integer" + }, + "pingback_url": { + "description": "notification URL of a completed task optional field when a task is completed we will notify you by GET request sent to the URL you have specified you can use the ‘$id’ string as a $id variable and ‘$tag’ as urlencoded $tag variable. We will set the necessary values before sending the request. example: http://your-server.com/pingscript?id=$id http://your-server.com/pingscript?id=$id&tag=$tag Note: special characters in pingback_url will be urlencoded; i.a., the # character will be encoded into %23 learn more on our Help Center", + "type": "string" + }, + "priority_urls": { + "description": "urls to be crawled bypassing the queue optional field URLs specified in this array will be crawled in the first instance, bypassing the crawling queue; Note: you should specify the absolute URL; you can specify up to 20 URLs; all URLs in the array must belong to the target domain; subdomains will be ignored unless the allow_subdomains parameter is set to trueexample: \"priority_urls\": [ \"https://dataforseo.com/apis/serp-api\", \"https://dataforseo.com/contact\" ]", + "items": { + "type": "string" + }, + "type": "array" + }, + "respect_sitemap": { + "description": "respect sitemap when crawling optional field set to true if you want to follow the order of pages indicated in the primary sitemap when crawling; default value: false Note: if set to true, the click_depth value in the API response will equal 0; the max_crawl_depth field of the request will be ignored, you can specify the number of pages to crawl using the max_crawl_pages parameter", + "type": "boolean" + }, + "return_despite_timeout": { + "description": "return data on pages despite the timeout error optional field if true, the data will be provided on pages that failed to load within 120 seconds and responded with a timeout error; default value: false", + "type": "boolean" + }, + "robots_txt_merge_mode": { + "description": "merge with or override robots.txt settings optional field possible values: merge, override; set to override if you want to ignore website crawling restrictions and other robots.txt settings default value: merge; Note: if set to override, specify the custom_robots_txt parameter", + "type": "string" + }, + "start_url": { + "description": "the first url to crawl optional field Note: you should specify an absolute URL if you want to crawl a single page, specify its URL in this field and additionally set the max_crawl_pages parameter to 1 you can also use the live Instant Pages endpoint to get page-specific data", + "type": "string" + }, + "store_raw_html": { + "description": "store HTML of crawled pages optional field set to true if you want to get the HTML of the page using the OnPage Raw HTML endpoint default value: false", + "type": "boolean" + }, + "support_cookies": { + "description": "support cookies on crawled pages optional field set to true to support cookies when crawling the pages default value: false", + "type": "boolean" + }, + "switch_pool": { + "description": "switch proxy pool optional field if true, additional proxy pools will be used to obtain the requested data; the parameter can be used if a multitude of tasks is set simultaneously, resulting in occasional rate-limit and/or site_unreachable errors", + "type": "boolean" + }, + "tag": { + "description": "user-defined task identifier optional field the character limit is 255 you can use this parameter to identify the task and match it with the result you will find the specified tag value in the data object of the response", + "type": "string" + }, + "target": { + "description": "target domain required field domain name should be specified without https:// and www. if you specify the page URL, the results will be returned for the domain included in the URL", + "type": "string" + }, + "validate_micromarkup": { + "description": "enable microdata validation optional field set to true if you want to use the OnPage API Microdata endpoint default value: false", + "type": "boolean" + } +} - added
Input schema / properties / body / items / requiredAdded value: +[ + "target", + "max_crawl_pages" +] - changed
Input schema / properties / body / items / typePrevious value: -[ - "object", - "null" -]New value: +"object" - changed
Input schema / requiredPrevious value: -[]New value: +[ + "body" +] - removed
Output schema / x-fastmcp-wrap-resultRemoved value: -true
- Changed
post_dataforseo_on_page_uncrawlable_resources7 fields changed- removed
Input schema / properties / body / exampleRemoved value: -[ - { - "filters": [ - [ - "meta.content_type", - "=", - "image/jpeg" - ], - "and", - [ - "url", - "like", - "%go%" - ] - ], - "id": "07281559-0695-0216-0000-c269be8b7592", - "limit": 10 - } -] - removed
Input schema / properties / body / items / anyOfRemoved value: -[ - { - "example": [ - { - "filters": [ - [ - "meta.content_type", - "=", - "image/jpeg" - ], - "and", - [ - "url", - "like", - "%go%" - ] - ], - "id": "07281559-0695-0216-0000-c269be8b7592", - "limit": 10 - } - ], - "properties": { - "filters": { - "description": "<em>array of results filtering parameters</em><br>optional field<br><strong>you can add several filters at once (8 filters maximum)</strong><br>you should set a logical operator <code>and</code>, <code>or</code> between the conditions<br>the following operators are supported:<br><code>regex</code>, <code>not_regex</code>, <code><</code>, <code><=</code>, <code>></code>, <code>>=</code>, <code>=</code>, <code><></code>, <code>in</code>, <code>not_in</code>, <code>like</code>, <code>not_like</code><br>you can use the <code>%</code> operator with <code>like</code> and <code>not_like</code> to match any string of zero or more characters<br>example:<br><code> [[\"meta.content_type\",\"=\",\"image/jpeg\"],<br>\"and\",<br>[\"url\",\"not_like\",\"%/help-center/%\"]]</code><p>The full list of possible filters is available <a href=\"/v3/on_page/filters_and_thresholds/?bash\" target=\"_blank\" rel=\"noopener noreferrer\">by this link.</a>", - "items": { - "type": [ - "object", - "null" - ] - }, - "type": [ - "array", - "null" - ] - }, - "id": { - "description": "<em>ID of the task</em><br><strong>required field</strong><br>you can get this ID in the response of the <a href=\"/v3/on_page/task_post/\">Task POST</a> endpoint<br>example:<br>\"07131248-1535-0216-1000-17384017ad04\"", - "type": "string" - }, - "limit": { - "description": "<em>the maximum number of returned uncrawlable resources</em><br>optional field<br>default value: <code>100</code><br>maximum value: <code>1000</code>", - "type": [ - "integer", - "null" - ] - }, - "offset": { - "description": "<em>offset in the results array of returned uncrawlable resources</em><br>optional field<br>default value: <code>0</code><br> maximum value: <code>2000000</code><br>if you specify the <code>10</code> value, the first ten invalid resources in the results array will be omitted and the data will be provided for the successive invalid resources", - "type": [ - "integer", - "null" - ] - }, - "order_by": { - "description": "<em>results sorting rules</em><br>optional field<br>you can use the same values as in the <code>filters</code> array to sort the results<br>possible sorting types:<br><code>asc</code> - results will be sorted in the ascending order<br><code>desc</code> - results will be sorted in the descending order<br>you should use a comma to set up a sorting type<br>example:<br><code>[\"meta.content_type,desc\"]</code><br><strong>note that you can set no more than three sorting rules in a single request</strong><br>you should use a comma to separate several sorting rules<br>example:<br><code>[\"meta.content_type,asc\",\"fetch_time,desc\"]</code>", - "items": { - "type": "string" - }, - "type": [ - "array", - "null" - ] - } - }, - "type": "object" - } -] - added
Input schema / properties / body / items / propertiesAdded value: +{ + "filters": { + "description": "array of results filtering parameters optional field you can add several filters at once (8 filters maximum) you should set a logical operator and, or between the conditions the following operators are supported: regex, not_regex, , , >, >=, =, , in, not_in, like, not_like you can use the % operator with like and not_like to match any string of zero or more characters example: [[\"meta.content_type\",\"=\",\"image/jpeg\"], \"and\", [\"url\",\"not_like\",\"%/help-center/%\"]]The full list of possible filters is available by this link.", + "items": {}, + "type": "array" + }, + "id": { + "description": "ID of the task required field you can get this ID in the response of the Task POST endpoint example: \"07131248-1535-0216-1000-17384017ad04\"", + "type": "string" + }, + "limit": { + "description": "the maximum number of returned uncrawlable resources optional field default value: 100 maximum value: 1000", + "type": "integer" + }, + "offset": { + "description": "offset in the results array of returned uncrawlable resources optional field default value: 0 maximum value: 2000000 if you specify the 10 value, the first ten invalid resources in the results array will be omitted and the data will be provided for the successive invalid resources", + "type": "integer" + }, + "order_by": { + "description": "results sorting rules optional field you can use the same values as in the filters array to sort the results possible sorting types: asc - results will be sorted in the ascending order desc - results will be sorted in the descending order you should use a comma to set up a sorting type example: [\"meta.content_type,desc\"] note that you can set no more than three sorting rules in a single request you should use a comma to separate several sorting rules example: [\"meta.content_type,asc\",\"fetch_time,desc\"]", + "items": { + "type": "string" + }, + "type": "array" + } +} - added
Input schema / properties / body / items / requiredAdded value: +[ + "id" +] - changed
Input schema / properties / body / items / typePrevious value: -[ - "object", - "null" -]New value: +"object" - changed
Input schema / requiredPrevious value: -[]New value: +[ + "body" +] - removed
Output schema / x-fastmcp-wrap-resultRemoved value: -true
- Changed
post_dataforseo_on_page_waterfall7 fields changed- removed
Input schema / properties / body / exampleRemoved value: -[ - { - "id": "08101204-0696-0216-0000-644a7b21a48a", - "url": "https://dataforseo.com/tag/broken-links" - } -] - removed
Input schema / properties / body / items / anyOfRemoved value: -[ - { - "example": [ - { - "id": "08101204-0696-0216-0000-644a7b21a48a", - "url": "https://dataforseo.com/tag/broken-links" - } - ], - "properties": { - "id": { - "description": "<em>ID of the task</em><br><strong>required field</strong><br>you can get this ID in the response of the <a href=\"/v3/on_page/task_post/\">Task POST</a> endpoint<br>example:<br>\"07131248-1535-0216-1000-17384017ad04\"", - "type": "string" - }, - "tag": { - "description": "<em>user-defined task identifier</em><br>optional field<br><em>the character limit is 255</em><br>you can use this parameter to identify the task and match it with the result<br>you will find the specified <code>tag</code> value in the <code>data</code> object of the response", - "type": [ - "string", - "null" - ] - }, - "url": { - "description": "<em>page URL</em><br><strong>required field</strong><br>specify the pages you want to receive timing for", - "type": "string" - } - }, - "type": "object" - } -] - added
Input schema / properties / body / items / propertiesAdded value: +{ + "id": { + "description": "ID of the task required field you can get this ID in the response of the Task POST endpoint example: “07131248-1535-0216-1000-17384017ad04”", + "type": "string" + }, + "tag": { + "description": "user-defined task identifier optional field the character limit is 255 you can use this parameter to identify the task and match it with the result you will find the specified tag value in the data object of the response", + "type": "string" + }, + "url": { + "description": "page URL required field specify the pages you want to receive timing for", + "type": "string" + } +} - added
Input schema / properties / body / items / requiredAdded value: +[ + "id", + "url" +] - changed
Input schema / properties / body / items / typePrevious value: -[ - "object", - "null" -]New value: +"object" - changed
Input schema / requiredPrevious value: -[]New value: +[ + "body" +] - removed
Output schema / x-fastmcp-wrap-resultRemoved value: -true
- Changed
search17 fields changed- removed
Input schema / $schemaRemoved value: -"https://json-schema.org/draft/2020-12/schema" - added
Input schema / properties / category / anyOfAdded value: +[ + { + "enum": [ + "seo", + "finance", + "social", + "search", + "sales", + "mail" + ], + "type": "string" + }, + { + "type": "null" + } +] - added
Input schema / properties / category / defaultAdded value: +null - changed
Input schema / properties / category / descriptionPrevious value: -"Restrict retrieval to one category. Omit to search everything. (AIsa-only: tool-router has no equivalent.)"New value: +"Restrict to one category (seo, finance, social, search, sales, mail). Omit to search everything." - removed
Input schema / properties / category / enumRemoved value: -[ - "seo", - "finance", - "social", - "search", - "sales", - "mail" -] - removed
Input schema / properties / category / typeRemoved value: -"string" - removed
Input schema / properties / known_fieldsRemoved value: -{ - "additionalProperties": true, - "default": {}, - "description": "Known values such as ticker, URL, provider, or identifier that improve retrieval.", - "type": "object" -} - changed
Input schema / properties / limit / descriptionPrevious value: -"Maximum number of additional direct tool candidates."New value: +"Maximum candidates, 1-10" - removed
Input schema / properties / limit / maximumRemoved value: -20 - removed
Input schema / properties / limit / minimumRemoved value: -1 - removed
Input schema / properties / provider_filtersRemoved value: -{ - "default": [], - "description": "Optional exact catalog provider keys used to narrow retrieval (for example similarweb). Do not use display brands. Omit this field if the exact key is unknown.", - "items": { - "type": "string" - }, - "maxItems": 50, - "type": "array", - "uniqueItems": true -} - changed
Input schema / properties / query / descriptionPrevious value: -"Natural-language capability or task to discover."New value: +"What you need, in plain language, e.g. 'backlinks of a domain', 'recent tweets by a user', 'insider trades for AAPL'. English works best." - removed
Input schema / properties / query / maxLengthRemoved value: -2000 - removed
Input schema / properties / query / minLengthRemoved value: -1 - removed
Input schema / properties / session_idRemoved value: -{ - "description": "Reuse the session_id returned by Search in all subsequent tool calls for this task. If omitted, a new session is created.", - "maxLength": 128, - "pattern": "^[A-Za-z0-9_-]*$", - "type": "string" -} - removed
Output schema / propertiesRemoved value: -{ - "next_steps_guidance": { - "anyOf": [ - { - "type": "null" - }, - { - "type": "array" - } - ], - "items": { - "type": "string" - } - }, - "plan": { - "additionalProperties": false, - "anyOf": [ - { - "type": "null" - }, - { - "type": "object" - } - ], - "properties": { - "canonical_use_case": { - "type": "string" - }, - "description": { - "type": "string" - }, - "known_pitfalls": { - "anyOf": [ - { - "type": "null" - }, - { - "type": "array" - } - ], - "items": { - "type": "string" - } - }, - "plan_ref": { - "type": "string" - }, - "primary_tools": { - "anyOf": [ - { - "type": "null" - }, - { - "type": "array" - } - ], - "items": { - "type": "string" - } - }, - "recommended_steps": { - "anyOf": [ - { - "type": "null" - }, - { - "type": "array" - } - ], - "items": { - "type": "string" - } - }, - "related_tools": { - "anyOf": [ - { - "type": "null" - }, - { - "type": "array" - } - ], - "items": { - "type": "string" - } - } - }, - "required": [ - "canonical_use_case", - "description", - "known_pitfalls", - "plan_ref", - "primary_tools", - "recommended_steps", - "related_tools" - ] - }, - "retrieval_mode": { - "anyOf": [ - { - "type": "null" - }, - { - "type": "string" - } - ] - }, - "search_id": { - "type": "string" - }, - "session_id": { - "description": "Reuse the session_id returned by Search in all subsequent tool calls for this task. If omitted, a new session is created.", - "maxLength": 128, - "minLength": 1, - "pattern": "^[A-Za-z0-9_-]{1,128}$", - "type": "string" - }, - "tools": { - "anyOf": [ - { - "type": "null" - }, - { - "type": "array" - } - ], - "items": { - "additionalProperties": false, - "properties": { - "arguments_schema": { - "additionalProperties": true, - "anyOf": [ - { - "type": "null" - }, - { - "type": "object" - } - ] - }, - "description": { - "type": "string" - }, - "execution_supported": { - "description": "Whether this router can execute and quote the operation; false retains documentation and discovery only.", - "type": "boolean" - }, - "execution_unsupported_reason": { - "description": "Why execution and quoting remain unavailable through this router.", - "type": "string" - }, - "has_full_schema": { - "type": "boolean" - }, - "match_reasons": { - "anyOf": [ - { - "type": "null" - }, - { - "type": "array" - } - ], - "items": { - "type": "string" - } - }, - "price": { - "additionalProperties": true, - "type": "object" - }, - "retrieval_debug": { - "additionalProperties": false, - "anyOf": [ - { - "type": "null" - }, - { - "type": "object" - } - ], - "properties": { - "fused_rank": { - "type": "integer" - }, - "fused_score": { - "type": "number" - }, - "lexical_rank": { - "type": "integer" - }, - "lexical_score": { - "type": "number" - }, - "rerank_admission_rank": { - "type": "integer" - }, - "rerank_rank": { - "type": "integer" - }, - "rerank_score": { - "anyOf": [ - { - "type": "null" - }, - { - "type": "number" - } - ] - }, - "runtime_availability": { - "type": "string" - }, - "vector_view_ranks": { - "additionalProperties": { - "type": "integer" - }, - "type": "object" - }, - "vector_view_scores": { - "additionalProperties": { - "type": "number" - }, - "type": "object" - } - }, - "required": [ - "fused_rank", - "fused_score", - "lexical_rank", - "lexical_score", - "rerank_admission_rank", - "rerank_rank", - "runtime_availability", - "vector_view_ranks", - "vector_view_scores" - ] - }, - "summary": { - "type": "string" - }, - "tool": { - "type": "string" - } - }, - "required": [ - "description", - "has_full_schema", - "price", - "summary", - "tool" - ], - "type": "object" - } - } -} - removed
Output schema / requiredRemoved value: -[ - "next_steps_guidance", - "search_id", - "session_id", - "tools" -]
- Changed
use1 field changed- changed
Input schema / properties / max_price_usd / descriptionPrevious value: -"Refuse the call before any spend if its quoted price is above this many USD"New value: +"Refuse the call before any spend if it would cost more than this many USD"
26 tool updates
- Added
batch_get_schema - Added
batch_quote - Changed
batch_use18 fields changed- added
Input schema / $schemaAdded value: +"https://json-schema.org/draft/2020-12/schema" - removed
Input schema / properties / calls / descriptionRemoved value: -"Up to 20 items of {call_id, operation_id, arguments}; steps at the same execution_level of a plan go in one batch" - added
Input schema / properties / calls / items / $schemaAdded value: +"https://json-schema.org/draft/2020-12/schema" - changed
Input schema / properties / calls / items / additionalPropertiesPrevious value: -trueNew value: +false - added
Input schema / properties / calls / items / propertiesAdded value: +{ + "arguments": { + "additionalProperties": true, + "description": "Strictly schema-compliant arguments using the exact field names and types from this tool's arguments_schema.", + "type": "object" + }, + "call_id": { + "description": "Caller-chosen identifier unique within this batch.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "tool": { + "description": "Exact tool name returned by search or batch_get_schema. Never invent a name.", + "minLength": 1, + "type": "string" + } +} - added
Input schema / properties / calls / items / requiredAdded value: +[ + "call_id", + "tool", + "arguments" +] - added
Input schema / properties / calls / maxItemsAdded value: +20 - added
Input schema / properties / calls / minItemsAdded value: +1 - removed
Input schema / properties / max_price_usdRemoved value: -{ - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Per-call price cap applied to every item" -} - removed
Input schema / properties / search_id / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / search_id / defaultRemoved value: -null - changed
Input schema / properties / search_id / descriptionPrevious value: -"search_id from the search that found these operations"New value: +"Optional search correlation identifier returned by search." - added
Input schema / properties / search_id / typeAdded value: +"string" - added
Input schema / properties / session_idAdded value: +{ + "description": "Reuse the session_id returned by Search in all subsequent tool calls for this task. If omitted, a new session is created.", + "maxLength": 128, + "pattern": "^[A-Za-z0-9_-]*$", + "type": "string" +} - added
Output schema / $defsAdded value: +{ + "jsonValue": { + "anyOf": [ + { + "additionalProperties": { + "$ref": "#/$defs/jsonValue" + }, + "type": "object" + }, + { + "items": { + "$ref": "#/$defs/jsonValue" + }, + "type": "array" + }, + { + "type": "string" + }, + { + "type": "number" + }, + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "description": "JSON value returned by the upstream tool." + } +} - added
Output schema / $schemaAdded value: +"https://json-schema.org/draft/2020-12/schema" - added
Output schema / propertiesAdded value: +{ + "batch_id": { + "type": "string" + }, + "error_count": { + "minimum": 0, + "type": "integer" + }, + "next_steps_guidance": { + "description": "Deterministic next-step instructions derived from this result. Not an authorization grant.", + "items": { + "type": "string" + }, + "type": "array" + }, + "results": { + "items": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "properties": { + "call_id": { + "type": "string" + }, + "customer_cost_micros_usd": { + "description": "Actual customer charge settled by AIsaServices, in micro-USD. Omitted when the upstream response does not report it.", + "minimum": 0, + "type": "integer" + }, + "data": { + "$ref": "#/$defs/jsonValue" + }, + "error": { + "anyOf": [ + { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "properties": { + "message": { + "type": "string" + }, + "retryable": { + "type": "boolean" + }, + "status": { + "type": "integer" + }, + "type": { + "enum": [ + "validation", + "authentication", + "payment", + "permission", + "rate_limit", + "upstream", + "timeout", + "internal" + ], + "type": "string" + } + }, + "required": [ + "type", + "status", + "retryable" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "request_id": { + "type": "string" + }, + "successful": { + "type": "boolean" + }, + "tool": { + "type": "string" + }, + "upstream_status": { + "description": "HTTP status returned by AIsaServices when a request was dispatched.", + "type": "integer" + } + }, + "required": [ + "call_id", + "tool", + "successful", + "request_id" + ], + "type": "object" + }, + "type": "array" + }, + "session_id": { + "description": "Reuse the session_id returned by Search in all subsequent tool calls for this task. If omitted, a new session is created.", + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9_-]*$", + "type": "string" + }, + "success_count": { + "minimum": 0, + "type": "integer" + }, + "total_count": { + "minimum": 1, + "type": "integer" + } +} - added
Output schema / requiredAdded value: +[ + "session_id", + "batch_id", + "total_count", + "success_count", + "error_count", + "results", + "next_steps_guidance" +]
- Changed
get_dataforseo_on_page_available_filters1 field changed- added
Output schema / x-fastmcp-wrap-resultAdded value: +true
- Changed
get_dataforseo_on_page_lighthouse_audits1 field changed- added
Output schema / x-fastmcp-wrap-resultAdded value: +true
- Changed
get_dataforseo_on_page_lighthouse_languages1 field changed- added
Output schema / x-fastmcp-wrap-resultAdded value: +true
- Changed
get_dataforseo_on_page_lighthouse_versions1 field changed- added
Output schema / x-fastmcp-wrap-resultAdded value: +true
- Changed
get_dataforseo_on_page_summary3 fields changed- changed
Input schema / properties / id / descriptionPrevious value: -"task identifier required field you can get this ID in the response of the Task POST endpoint example: “07131248-1535-0216-1000-17384017ad04”"New value: +"<em>task identifier</em><br><strong>required field</strong><br>you can get this ID in the response of the <a href=\"/v3/on_page/task_post/\" target=\"_blank\" rel=\"noopener noreferrer\">Task POST</a> endpoint<br>example:<br>“07131248-1535-0216-1000-17384017ad04”" - added
Input schema / properties / id / exampleAdded value: +"00000000-0000-0000-0000-000000000000" - added
Output schema / x-fastmcp-wrap-resultAdded value: +true
- Changed
get_details13 fields changed- added
Input schema / $schemaAdded value: +"https://json-schema.org/draft/2020-12/schema" - removed
Input schema / properties / argumentsRemoved value: -{ - "anyOf": [ - { - "additionalProperties": true, - "type": "object" - }, - { - "type": "null" - } - ], - "default": null, - "description": "The arguments the operation would be called with, for a price that reflects them. Keyed by operation_id for a batch, or passed flat for a single operation_id. Routes whose required parameters are validated before pricing have no price without them." -} - added
Input schema / properties / include_arguments_schemaAdded value: +{ + "default": true, + "description": "Return the complete arguments_schema. Defaults to true.", + "type": "boolean" +} - changed
Input schema / properties / include_documentation / descriptionPrevious value: -"Include the complete native public OpenAPI document, reference closure and scoped completeness. Existing execution schemas remain unchanged."New value: +"Return the complete immutable public OpenAPI operation, referenced declarations, provenance and scoped completeness. Documentation does not change execution support." - added
Input schema / properties / include_response_schemaAdded value: +{ + "default": false, + "description": "Return the complete response_schema. Defaults to false.", + "type": "boolean" +} - removed
Input schema / properties / operation_idRemoved value: -{ - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "One operation_id from search" -} - removed
Input schema / properties / operation_idsRemoved value: -{ - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Up to 20 operation_ids, for a batch" -} - added
Input schema / properties / session_idAdded value: +{ + "description": "Reuse the session_id returned by Search in all subsequent tool calls for this task. If omitted, a new session is created.", + "maxLength": 128, + "pattern": "^[A-Za-z0-9_-]*$", + "type": "string" +} - added
Input schema / properties / toolsAdded value: +{ + "description": "Exact tool names returned by search whose complete contracts are needed. Never invent tool names.", + "items": { + "minLength": 1, + "pattern": "^\\S(?:.*\\S)?$", + "type": "string" + }, + "maxItems": 20, + "minItems": 1, + "type": "array", + "uniqueItems": true +} - removed
Input schema / properties / with_quoteRemoved value: -{ - "default": true, - "description": "Whether each operation is priced for this account before the answer. One round trip per operation; spends nothing.", - "type": "boolean" -} - added
Input schema / requiredAdded value: +[ + "tools" +] - added
Output schema / propertiesAdded value: +{ + "error_count": { + "type": "integer" + }, + "next_steps_guidance": { + "anyOf": [ + { + "type": "null" + }, + { + "type": "array" + } + ], + "items": { + "type": "string" + } + }, + "session_id": { + "description": "Reuse the session_id returned by Search in all subsequent tool calls for this task. If omitted, a new session is created.", + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9_-]{1,128}$", + "type": "string" + }, + "success_count": { + "type": "integer" + }, + "tools": { + "additionalProperties": { + "additionalProperties": false, + "properties": { + "arguments_schema": { + "additionalProperties": true, + "anyOf": [ + { + "type": "null" + }, + { + "type": "object" + } + ] + }, + "canonical_operation_id": { + "type": "string" + }, + "documentation": { + "additionalProperties": true, + "type": "object" + }, + "error": { + "additionalProperties": false, + "anyOf": [ + { + "type": "null" + }, + { + "type": "object" + } + ], + "properties": { + "code": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "code", + "message" + ] + }, + "execution_supported": { + "description": "Whether this router can execute and quote the operation; false retains documentation and discovery only.", + "type": "boolean" + }, + "execution_unsupported_reason": { + "description": "Why execution and quoting remain unavailable through this router.", + "type": "string" + }, + "idempotent": { + "anyOf": [ + { + "type": "null" + }, + { + "type": "boolean" + } + ] + }, + "known_pitfalls": { + "anyOf": [ + { + "type": "null" + }, + { + "type": "array" + } + ], + "items": { + "type": "string" + } + }, + "read_only": { + "anyOf": [ + { + "type": "null" + }, + { + "type": "boolean" + } + ] + }, + "response_schema": { + "additionalProperties": true, + "anyOf": [ + { + "type": "null" + }, + { + "type": "object" + } + ] + }, + "side_effects": { + "anyOf": [ + { + "type": "null" + }, + { + "type": "array" + } + ], + "items": { + "type": "string" + } + }, + "successful": { + "type": "boolean" + } + }, + "required": [ + "successful" + ], + "type": "object" + }, + "type": "object" + }, + "total_count": { + "type": "integer" + } +} - added
Output schema / requiredAdded value: +[ + "error_count", + "next_steps_guidance", + "session_id", + "success_count", + "tools", + "total_count" +]
- Changed
post_dataforseo_on_page_content_parsing7 fields changed- added
Input schema / properties / body / exampleAdded value: +[ + { + "id": "11161551-1535-0216-0000-500b3f307f92", + "url": "https://dataforseo.com/blog/a-versatile-alternative-to-google-trends-exploring-the-power-of-dataforseo-trends-api" + } +] - added
Input schema / properties / body / items / anyOfAdded value: +[ + { + "example": [ + { + "id": "11161551-1535-0216-0000-500b3f307f92", + "url": "https://dataforseo.com/blog/a-versatile-alternative-to-google-trends-exploring-the-power-of-dataforseo-trends-api" + } + ], + "properties": { + "id": { + "description": "<em>ID of the task</em><br><strong>required field</strong><br>you can get this ID in the response of the <a href=\"/v3/on_page/task_post/\">Task POST</a> endpoint<br><strong>note:</strong> the <code>enable_content_parsing</code> parameter in the POST request must be set to <code>true</code><br>example:<br><code>\"07131248-1535-0216-1000-17384017ad04\"</code>", + "type": "string" + }, + "markdown_view": { + "description": "<em>return page content as markdown</em><br>optional field<br>if set to <code>true</code>, the markdown-formatted content of the page will be returned in the <code>page_as_markdown</code> field of the response;<br>default value: <code>false</code>", + "type": [ + "boolean", + "null" + ] + }, + "url": { + "description": "<em>URL of the content to parse</em><br><strong>required field</strong><br>URL of the page to parse<br>example:<br>`https://dataforseo.com/blog/a-versatile-alternative-to-google-trends-exploring-the-power-of-dataforseo-trends-api`", + "type": "string" + } + }, + "type": "object" + } +] - removed
Input schema / properties / body / items / propertiesRemoved value: -{ - "id": { - "description": "ID of the task required field you can get this ID in the response of the Task POST endpoint note: the enable_content_parsing parameter in the POST request must be set to true example: \"07131248-1535-0216-1000-17384017ad04\"", - "type": "string" - }, - "markdown_view": { - "description": "return page content as markdown optional field if set to true, the markdown-formatted content of the page will be returned in the page_as_markdown field of the response; default value: false", - "type": "boolean" - }, - "url": { - "description": "URL of the content to parse required field URL of the page to parse example: https://dataforseo.com/blog/a-versatile-alternative-to-google-trends-exploring-the-power-of-dataforseo-trends-api", - "type": "string" - } -} - removed
Input schema / properties / body / items / requiredRemoved value: -[ - "url", - "id" -] - changed
Input schema / properties / body / items / typePrevious value: -"object"New value: +[ + "object", + "null" +] - changed
Input schema / requiredPrevious value: -[ - "body" -]New value: +[] - added
Output schema / x-fastmcp-wrap-resultAdded value: +true
- Changed
post_dataforseo_on_page_duplicate_content7 fields changed- added
Input schema / properties / body / exampleAdded value: +[ + { + "id": "07281559-0695-0216-0000-c269be8b7592", + "url": "https://www.etsy.com/" + } +] - added
Input schema / properties / body / items / anyOfAdded value: +[ + { + "example": [ + { + "id": "07281559-0695-0216-0000-c269be8b7592", + "url": "https://www.etsy.com/" + } + ], + "properties": { + "id": { + "description": "<em>ID of the task</em><br><strong>required field</strong><br>you can get this ID in the response of the <a href=\"https://docs.dataforseo.com/v3/on_page/task_post/\">Task POST</a> endpoint<br>example:<br>\"07131248-1535-0216-1000-17384017ad04\"", + "type": "string" + }, + "limit": { + "description": "<em>the maximum number of returned pages</em><br>optional field<br>default value: <code>100</code><br>maximum value: <code>1000</code>", + "type": [ + "integer", + "null" + ] + }, + "offset": { + "description": "<em>offset in the results array of returned pages</em><br>optional field<br>default value: <code>0</code><br>maximum value: <code>2000000</code><br>if you specify the <code>10</code> value, the first ten pages in the results array will be omitted and the data will be provided for the successive pages", + "type": [ + "integer", + "null" + ] + }, + "similarity": { + "description": "<em>content similarity score</em><br>by default, the content is considered duplicate if the value is greater than or equals <code>6</code><br>you can specify any similarity score in the 0-to-10 range", + "type": [ + "integer", + "null" + ] + }, + "tag": { + "description": "<em>user-defined task identifier</em><br>optional field<br><em>the character limit is 255</em><br>you can use this parameter to identify the task and match it with the result<br>you will find the specified <code>tag</code> value in the <code>data</code> object of the response", + "type": [ + "string", + "null" + ] + }, + "url": { + "description": "<em>page URL</em><br><strong>required field</strong><br>specify the initial page you want to receive duplicate content for", + "type": "string" + } + }, + "type": "object" + } +] - removed
Input schema / properties / body / items / propertiesRemoved value: -{ - "id": { - "description": "ID of the task required field you can get this ID in the response of the Task POST endpoint example: “07131248-1535-0216-1000-17384017ad04”", - "type": "string" - }, - "limit": { - "description": "the maximum number of returned pages optional field default value: 100 maximum value: 1000", - "type": "integer" - }, - "offset": { - "description": "offset in the results array of returned pages optional field default value: 0 maximum value: 2000000 if 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", - "type": "integer" - }, - "similarity": { - "description": "content similarity score by default, the content is considered duplicate if the value is greater than or equals 6 you can specify any similarity score in the 0-to-10 range", - "type": "integer" - }, - "tag": { - "description": "user-defined task identifier optional field the character limit is 255 you can use this parameter to identify the task and match it with the result you will find the specified tag value in the data object of the response", - "type": "string" - }, - "url": { - "description": "page URL required field specify the initial page you want to receive duplicate content for", - "type": "string" - } -} - removed
Input schema / properties / body / items / requiredRemoved value: -[ - "id", - "url" -] - changed
Input schema / properties / body / items / typePrevious value: -"object"New value: +[ + "object", + "null" +] - changed
Input schema / requiredPrevious value: -[ - "body" -]New value: +[] - added
Output schema / x-fastmcp-wrap-resultAdded value: +true
- Changed
post_dataforseo_on_page_duplicate_tags7 fields changed- added
Input schema / properties / body / exampleAdded value: +[ + { + "id": "07281559-0695-0216-0000-c269be8b7592", + "limit": 10, + "type": "duplicate_description" + } +] - added
Input schema / properties / body / items / anyOfAdded value: +[ + { + "example": [ + { + "id": "07281559-0695-0216-0000-c269be8b7592", + "limit": 10, + "type": "duplicate_description" + } + ], + "properties": { + "accumulator": { + "description": "<em>tag value</em><br>optional field<br>specify a title or description here if you want to receive a list of duplicate pages that contains this tag", + "type": [ + "string", + "null" + ] + }, + "id": { + "description": "<em>ID of the task</em><br><strong>required field</strong><br>you can get this ID in the response of the <a href=\"https://docs.dataforseo.com/v3/on_page/task_post/\">Task POST</a> endpoint<br>example:<br>\"07131248-1535-0216-1000-17384017ad04\"", + "type": "string" + }, + "limit": { + "description": "<em>the maximum number of returned pages</em><br>optional field<br>default value: <code>100</code><br>maximum value: <code>1000</code>", + "type": [ + "integer", + "null" + ] + }, + "offset": { + "description": "<em>offset in the results array of returned pages</em><br>optional field<br>default value: <code>0</code><br>maximum value: <code>2000000</code><br>if you specify the <code>10</code> value, the first ten pages in the results array will be omitted and the data will be provided for the successive pages", + "type": [ + "integer", + "null" + ] + }, + "tag": { + "description": "<em>user-defined task identifier</em><br>optional field<br><em>the character limit is 255</em><br>you can use this parameter to identify the task and match it with the result<br>you will find the specified <code>tag</code> value in the <code>data</code> object of the response", + "type": [ + "string", + "null" + ] + }, + "type": { + "description": "type of element", + "type": "string" + } + }, + "type": "object" + } +] - removed
Input schema / properties / body / items / propertiesRemoved value: -{ - "accumulator": { - "description": "tag value optional field specify a title or description here if you want to receive a list of duplicate pages that contains this tag", - "type": "string" - }, - "id": { - "description": "ID of the task required field you can get this ID in the response of the Task POST endpoint example: “07131248-1535-0216-1000-17384017ad04”", - "type": "string" - }, - "limit": { - "description": "the maximum number of returned pages optional field default value: 100 maximum value: 1000", - "type": "integer" - }, - "offset": { - "description": "offset in the results array of returned pages optional field default value: 0 maximum value: 2000000 if 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", - "type": "integer" - }, - "tag": { - "description": "user-defined task identifier optional field the character limit is 255 you can use this parameter to identify the task and match it with the result you will find the specified tag value in the data object of the response", - "type": "string" - }, - "type": { - "description": "type of element", - "enum": [ - "duplicate_title", - "duplicate_description" - ], - "type": "string" - } -} - removed
Input schema / properties / body / items / requiredRemoved value: -[ - "id", - "type" -] - changed
Input schema / properties / body / items / typePrevious value: -"object"New value: +[ + "object", + "null" +] - changed
Input schema / requiredPrevious value: -[ - "body" -]New value: +[] - added
Output schema / x-fastmcp-wrap-resultAdded value: +true
- Changed
post_dataforseo_on_page_force_stop7 fields changed- added
Input schema / properties / body / exampleAdded value: +[ + { + "id": "08121600-1535-0216-0000-37b4c7a34453" + }, + { + "id": "08121600-1535-0216-0000-d6a5000b6897" + } +] - added
Input schema / properties / body / items / anyOfAdded value: +[ + { + "example": [ + { + "id": "08121600-1535-0216-0000-37b4c7a34453" + }, + { + "id": "08121600-1535-0216-0000-d6a5000b6897" + } + ], + "properties": { + "id": { + "description": "<em>ID of the task</em><br><strong>required field</strong><br>you can get this ID in the response of the <a href=\"/v3/on_page/task_post/\">Task POST</a> endpoint<br>example:<br>\"07131248-1535-0216-1000-17384017ad04\"<p><strong>note</strong>: you can set up to 1000 <code>id</code> values as separate objects in the POST array", + "type": "string" + } + }, + "type": "object" + } +] - removed
Input schema / properties / body / items / propertiesRemoved value: -{ - "id": { - "description": "ID of the task required field you can get this ID in the response of the Task POST endpoint example: “07131248-1535-0216-1000-17384017ad04” note: you can set up to 1000 id values as separate objects in the POST array", - "type": "string" - } -} - removed
Input schema / properties / body / items / requiredRemoved value: -[ - "id" -] - changed
Input schema / properties / body / items / typePrevious value: -"object"New value: +[ + "object", + "null" +] - changed
Input schema / requiredPrevious value: -[ - "body" -]New value: +[] - added
Output schema / x-fastmcp-wrap-resultAdded value: +true
- Changed
post_dataforseo_on_page_keyword_density7 fields changed- added
Input schema / properties / body / exampleAdded value: +[ + { + "filters": [ + "frequency", + ">", + 5 + ], + "id": "09101923-1535-0216-0000-2389a8854b70", + "keyword_length": 2, + "url": "https://dataforseo.com/" + } +] - added
Input schema / properties / body / items / anyOfAdded value: +[ + { + "example": [ + { + "filters": [ + "frequency", + ">", + 5 + ], + "id": "09101923-1535-0216-0000-2389a8854b70", + "keyword_length": 2, + "url": "https://dataforseo.com/" + } + ], + "properties": { + "filters": { + "description": "<em>array of results filtering parameters</em><br>optional field<br><strong>you can add several filters at once (8 filters maximum)</strong><br>you should set a logical operator <code>and</code>, <code>or</code> between the conditions<br>the following operators are supported:<br><code>regex</code>, <code>not_regex</code>, <code>=</code>, <code><></code>, <code>in</code>, <code>not_in</code>, <code>like</code>, <code>not_like</code><br>you can use the <code>%</code> operator with <code>like</code> and <code>not_like</code> to match any string of zero or more characters<br>example:<br><code>[\"keyword\",\"=\",\"%seo%\"]</code><p><code>[[\"keyword\",\"=\",\"%seo%\"],<br>\"and\",<br>[\"frequency\",\"<\",\"6\"]]</code><p><code>[[\"keyword\",\"not_like\",\"%seo%\"],<br>\"and\",<br>[[\"frequency\",\">\",\"6\"],\"or\",[\"density\",\">\",\"0.02\"]]]</code><p>The full list of possible filters is available <a href=\"/v3/on_page/filters_and_thresholds/?bash\" target=\"_blank\" rel=\"noopener noreferrer\">by this link.</a>", + "items": { + "type": [ + "object", + "null" + ] + }, + "type": [ + "array", + "null" + ] + }, + "id": { + "description": "<em>ID of the task</em><br><strong>required field</strong><br>you can get this ID in the response of the <a href=\"/v3/on_page/task_post/\">Task POST</a> endpoint<br>example:<br>\"07131248-1535-0216-1000-17384017ad04\"", + "type": "string" + }, + "keyword_length": { + "description": "<em>number of words for a keyword</em><br><strong>required field</strong><br>possible values:<br><code>1</code>, <code>2</code>, <code>3</code>, <code>4</code>, <code>5</code>", + "type": "integer" + }, + "limit": { + "description": "<em>the maximum number of returned keywords</em><br>optional field<br>default value: <code>100</code><br>maximum value: <code>1000</code>", + "type": [ + "integer", + "null" + ] + }, + "order_by": { + "description": "<em>results sorting rules</em><br>optional field<br>you can use the same values as in the <code>filters</code> array to sort the results<br>possible sorting types:<br><code>asc</code> - results will be sorted in the ascending order<br><code>desc</code> - results will be sorted in the descending order<br>you should use a comma to set up a sorting type<br>example:<br><code>[\"frequency,desc\"]</code><br><strong>note that you can set no more than three sorting rules in a single request</strong><br>you should use a comma to separate several sorting rules<br>example:<br><code>[\"keyword,asc\",\"frequency,desc\"]</code>", + "items": { + "type": "string" + }, + "type": [ + "array", + "null" + ] + }, + "tag": { + "description": "<em>user-defined task identifier</em><br>optional field<br><em>the character limit is 255</em><br>you can use this parameter to identify the task and match it with the result<br>you will find the specified <code>tag</code> value in the <code>data</code> object of the response", + "type": [ + "string", + "null" + ] + }, + "url": { + "description": "<em>page URL</em><br>optional field<br><strong>if you do not specify a page here, the results will be provided for the whole website</strong><br>if you use this field, the API response will contain only keywords from the specified page<br>a page should be specified with absolute URL (including <code>http://</code> or <code>https://</code>)", + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + } +] - removed
Input schema / properties / body / items / propertiesRemoved value: -{ - "filters": { - "description": "array of results filtering parameters optional field you can add several filters at once (8 filters maximum) you should set a logical operator and, or between the conditions the following operators are supported: regex, not_regex, =, <>, in, not_in, like, not_like you can use the % operator with like and not_like to match any string of zero or more characters example: [\"keyword\",\"=\",\"%seo%\"] [[\"keyword\",\"=\",\"%seo%\"], \"and\", [\"frequency\",\"<\",\"6\"]] [[\"keyword\",\"not_like\",\"%seo%\"], \"and\", [[\"frequency\",\">\",\"6\"],\"or\",[\"density\",\">\",\"0.02\"]]] The full list of possible filters is available by this link.", - "items": {}, - "type": "array" - }, - "id": { - "description": "ID of the task required field you can get this ID in the response of the Task POST endpoint example: “07131248-1535-0216-1000-17384017ad04”", - "type": "string" - }, - "keyword_length": { - "description": "number of words for a keyword required field possible values: 1, 2, 3, 4, 5", - "type": "integer" - }, - "limit": { - "description": "the maximum number of returned keywords optional field default value: 100 maximum value: 1000", - "type": "integer" - }, - "order_by": { - "description": "results sorting rules optional field you can use the same values as in the filters array to sort the results possible sorting types: asc – results will be sorted in the ascending order desc – results will be sorted in the descending order you should use a comma to set up a sorting type example: [\"frequency,desc\"] note that you can set no more than three sorting rules in a single request you should use a comma to separate several sorting rules example: [\"keyword,asc\",\"frequency,desc\"]", - "items": { - "type": "string" - }, - "type": "array" - }, - "tag": { - "description": "user-defined task identifier optional field the character limit is 255 you can use this parameter to identify the task and match it with the result you will find the specified tag value in the data object of the response", - "type": "string" - }, - "url": { - "description": "page URL optional field if you do not specify a page here, the results will be provided for the whole website if you use this field, the API response will contain only keywords from the specified page a page should be specified with absolute URL (including http:// or https://)", - "type": "string" - } -} - removed
Input schema / properties / body / items / requiredRemoved value: -[ - "id", - "keyword_length" -] - changed
Input schema / properties / body / items / typePrevious value: -"object"New value: +[ + "object", + "null" +] - changed
Input schema / requiredPrevious value: -[ - "body" -]New value: +[] - added
Output schema / x-fastmcp-wrap-resultAdded value: +true
- Changed
post_dataforseo_on_page_lighthouse_live_json7 fields changed- added
Input schema / properties / body / exampleAdded value: +[ + { + "for_mobile": true, + "tag": "some_string_123", + "url": "https://dataforseo.com" + } +] - added
Input schema / properties / body / items / anyOfAdded value: +[ + { + "example": [ + { + "for_mobile": true, + "tag": "some_string_123", + "url": "https://dataforseo.com" + } + ], + "properties": { + "audits": { + "description": "<em>Lighthouse audits</em><br>optional field<br>audits are individual tests Lighthouse runs for each specific feature/optimization/metric to produce a numeric score (<a href=\"https://github.com/GoogleChrome/lighthouse/blob/master/docs/architecture.md#components--terminology\" rel=\"noopener noreferrer\" target=\"_blank\">see official definition</a>); <p><strong>if you ignore this field, we will return data for all audits</strong>;<br>use this field to get data for specific audits you indicate here;<p><strong>Note:</strong> that some audits do not belong to a specific category and are stand-alone page quality measurements;<p>in general, there can be several use cases:<p>1. if you ignore <code>categories</code>, you can use this field to get data for the specified audits only<br>for example, if you ignore <code>\"categories\"</code> and specify <code>\"audits\": [\"metrics/cumulative-layout-shift\",\"metrics/largest-contentful-paint\",\"metrics/total-blocking-time\"]</code>, you will get data only for these audits<p>2. if you specify a category, you can use this field to additionally receive audits that do not belong to the category(-ies) you specified<br>for example, if you specify <code>\"categories\": [\"seo\"]</code> and <code>\"audits\": [\"metrics/cumulative-layout-shift\",\"metrics/largest-contentful-paint\",\"metrics/total-blocking-time\"]</code>, you will get only these audits under \"performance\" and all audits under \"seo\"<p>you can get <a href=\"/v3/on_page/lighthouse/audits/\">the full list of possible audits here</a>", + "items": { + "type": "string" + }, + "type": [ + "array", + "null" + ] + }, + "browser_cpu_throttling_multiplier": { + "description": "<em>browser CPU throttling multiplier</em><br><strong>required if <code>browser_network_throttling_method</code> is set to <code>devtools</code>;</strong><br>set the CPU throttling multiplier to simulate device performance conditions during the Lighthouse audit;<br>can be specified within the following range: <code>1–4</code>;<br><strong>Note:</strong> this parameter is applied only when <code>browser_network_throttling_method</code> is set to <code>devtools</code>;", + "type": [ + "number", + "null" + ] + }, + "browser_network_throttling": { + "description": "<em>browser network throttling</em><br><strong>required if <code>browser_network_throttling_method</code> is set to <code>devtools</code>;</strong><br>set the network throttling profile to simulate connection speed conditions during the Lighthouse audit;<br>possible values: <code>no_throttling</code>, <code>fast_4g</code>, <code>slow_4g</code>, <code>regular_3g</code>, <code>pc</code>;<br><strong>Note:</strong> this parameter is applied only when <code>browser_network_throttling_method</code> is set to <code>devtools</code>;", + "type": [ + "string", + "null" + ] + }, + "browser_network_throttling_method": { + "description": "<em>browser network throttling method</em><br>optional field<br>defines the method used to apply throttling during the Lighthouse audit;<br>possible vaules:<br><code>simulate</code> - calculates estimated performance metrics without applying explicit throttling;<br><code>devtools</code> - applies the throttling settings specified in <code>browser_network_throttling</code> and <code>browser_cpu_throttling_multiplier</code>;<br><code>provided</code> - uses the network conditions of the crawling environment;", + "type": [ + "string", + "null" + ] + }, + "browser_screen_height": { + "description": "<em>browser screen height</em><br>optional field<br>set the screen height of the browser used for the Lighthouse audit to emulate a specific device;<br>can be specified within the following range: <code>240–9999</code>;", + "type": [ + "integer", + "null" + ] + }, + "browser_screen_scale_factor": { + "description": "<em>browser screen scale factor</em><br>optional field<br>set the device pixel ratio of the browser used for the Lighthouse audit;<br>can be specified within the following range: <code>0.5–3</code>;", + "type": [ + "number", + "null" + ] + }, + "browser_screen_width": { + "description": "<em>browser screen width</em><br>optional field<br>set the screen width of the browser used for the Lighthouse audit to emulate a specific device;<br>can be specified within the following range: <code>240–9999</code>;", + "format": "int64", + "type": [ + "integer", + "null" + ] + }, + "categories": { + "description": "<em>categories of Lighthouse audits</em><br>optional field<br>each category is a collection of audits and audit groups that applies weighting and scoring to the section (<a href=\"https://github.com/GoogleChrome/lighthouse/blob/master/docs/architecture.md#auditreport-terminology\" rel=\"noopener noreferrer\" target=\"_blank\">see official definition</a>)<p><strong>if you ignore this field, we will return data for all categories unless you specify <code>audits</code></strong><br>use this field to get data for specific categories you indicate here<p>possible values:<br><code>seo</code>, <code>performance</code>, <code>best_practices</code>, <code>accessibility</code>", + "items": { + "type": "string" + }, + "type": [ + "array", + "null" + ] + }, + "custom_user_agent": { + "description": "<em>custom user agent</em><br>optional field<br>specify the custom user agent used by the browser when running the Lighthouse audit;<br>can be specified with up to 254 characters;", + "type": [ + "string", + "null" + ] + }, + "for_mobile": { + "description": "<em>applies mobile emulation</em><br>optional field<br>if set to <code>true</code>, Lighthouse will use mobile device and screen emulation to test the page against mobile environment<br>if set to <code>false</code>, the results will be provided for desktop<br>default value: <code>false</code>", + "type": [ + "boolean", + "null" + ] + }, + "language_code": { + "description": "<em>lighthouse language code</em><br>optional field<br>you can receive the list of available languages of the search engine with their <code>language_code</code> by making a separate request to <code>https://api.dataforseo.com/v3/on_page/lighthouse/languages</code><br>default value:<br><code class=\"long-string\">en</code>", + "type": [ + "string", + "null" + ] + }, + "language_name": { + "description": "<em>lighthouse language name</em><br>optional field<br>you can receive the list of available languages of the search engine with their <code>language_name</code> by making a separate request to <code>https://api.dataforseo.com/v3/on_page/lighthouse/languages</code><br>default value:<br><code class=\"long-string\">English</code>", + "type": [ + "string", + "null" + ] + }, + "tag": { + "description": "<em>user-defined task identifier</em><br>optional field<br><em>the character limit is 255</em><br>you can use this parameter to identify the task and match it with the result<br>you will find the specified <code>tag</code> value in the <code>data</code> object of the response", + "type": [ + "string", + "null" + ] + }, + "url": { + "description": "<em>target URL</em><br><strong>required field</strong><br>target page should be specified with its absolute URL (including http:// or https://)<br>example:<br><code>https://dataforseo.com/</code>", + "type": "string" + }, + "version": { + "description": "<em>lighthouse version</em><br>optional field<br>you can obtain the results specific to a certain Lighthouse version by specifying its number<br>the list of available versions is available through the <a href=\"/v3/on_page/lighthouse/versions/\" rel=\"noopener noreferrer\" target=\"_blank\">Lighthouse Versions endpoint</a>", + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + } +] - removed
Input schema / properties / body / items / propertiesRemoved value: -{ - "audits": { - "description": "Lighthouse audits optional field audits are individual tests Lighthouse runs for each specific feature/optimization/metric to produce a numeric score (see official definition); if you ignore this field, we will return data for all audits; use this field to get data for specific audits you indicate here; Note: that some audits do not belong to a specific category and are stand-alone page quality measurements; in general, there can be several use cases: 1. if you ignore categories, you can use this field to get data for the specified audits only for example, if you ignore \"categories\" and specify \"audits\": [\"metrics/cumulative-layout-shift\",\"metrics/largest-contentful-paint\",\"metrics/total-blocking-time\"], you will get data only for these audits 2. if you specify a category, you can use this field to additionally receive audits that do not belong to the category(-ies) you specified for example, if you specify \"categories\": [\"seo\"] and \"audits\": [\"metrics/cumulative-layout-shift\",\"metrics/largest-contentful-paint\",\"metrics/total-blocking-time\"], you will get only these audits under “performance” and all audits under “seo” you can get the full list of possible audits here", - "items": { - "type": "string" - }, - "type": "array" - }, - "categories": { - "description": "categories of Lighthouse audits optional field each category is a collection of audits and audit groups that applies weighting and scoring to the section (see official definition) if you ignore this field, we will return data for all categories unless you specify audits use this field to get data for specific categories you indicate here possible values: seo, performance, best_practices, accessibility", - "items": { - "type": "string" - }, - "type": "array" - }, - "for_mobile": { - "description": "applies mobile emulation optional field if set to true, Lighthouse will use mobile device and screen emulation to test the page against mobile environment if set to false, the results will be provided for desktop default value: false", - "type": "boolean" - }, - "language_code": { - "description": "lighthouse language code optional field you can receive the list of available languages of the search engine with their language_code by making a separate request to https://api.dataforseo.com/v3/on_page/lighthouse/languages default value: en", - "type": "string" - }, - "language_name": { - "description": "lighthouse language name optional field you can receive the list of available languages of the search engine with their language_name by making a separate request to https://api.dataforseo.com/v3/on_page/lighthouse/languages default value: English", - "type": "string" - }, - "tag": { - "description": "user-defined task identifier optional field the character limit is 255 you can use this parameter to identify the task and match it with the result you will find the specified tag value in the data object of the response", - "type": "string" - }, - "url": { - "description": "target URL required field target page should be specified with its absolute URL (including http:// or https://) example: https://dataforseo.com/", - "type": "string" - }, - "version": { - "description": "lighthouse version optional field you can obtain the results specific to a certain Lighthouse version by specifying its number the list of available versions is available through the Lighthouse Versions endpoint", - "type": "string" - } -} - removed
Input schema / properties / body / items / requiredRemoved value: -[ - "url" -] - changed
Input schema / properties / body / items / typePrevious value: -"object"New value: +[ + "object", + "null" +] - changed
Input schema / requiredPrevious value: -[ - "body" -]New value: +[] - added
Output schema / x-fastmcp-wrap-resultAdded value: +true
- Changed
post_dataforseo_on_page_links7 fields changed- added
Input schema / properties / body / exampleAdded value: +[ + { + "filters": [ + [ + "dofollow", + "=", + true + ], + "and", + [ + "direction", + "=", + "external" + ] + ], + "id": "07281559-0695-0216-0000-c269be8b7592", + "limit": 10, + "page_from": "/apis/google-trends-api" + } +] - added
Input schema / properties / body / items / anyOfAdded value: +[ + { + "example": [ + { + "filters": [ + [ + "dofollow", + "=", + true + ], + "and", + [ + "direction", + "=", + "external" + ] + ], + "id": "07281559-0695-0216-0000-c269be8b7592", + "limit": 10, + "page_from": "/apis/google-trends-api" + } + ], + "properties": { + "filters": { + "description": "<em>array of results filtering parameters</em><br>optional field<br><strong>you can add several filters at once (8 filters maximum)</strong><br>you should set a logical operator <code>and</code>, <code>or</code> between the conditions<br>the following operators are supported:<br><code>regex</code>, <code>not_regex</code>, <code>=</code>, <code><></code>, <code>in</code>, <code>not_in</code>, <code>like</code>, <code>not_like</code><br>you can use the <code>%</code> operator with <code>like</code> and <code>not_like</code> to match any string of zero or more characters<br>example:<br><code>[\"direction\",\"=\",\"external\"]</code><p><code>[[\"domain_to\",\"<>\",\"example.com\"],<br>\"and\",<br>[\"link_from\",\"not_like\",\"%example.com/blog%\"]]</code><p><code>[[\"direction\",\"=\",\"external\"],<br>\"and\",<br>[[\"link_from\",\"like\",\"%example.com/blog%\"],\"or\",[\"link_from\",\"like\",\"%example.com/help%\"]]]</code><p>The full list of possible filters is available <a href=\"/v3/on_page/filters_and_thresholds/?bash\" rel=\"noopener noreferrer\" target=\"_blank\">by this link.</a>", + "items": { + "type": [ + "object", + "null" + ] + }, + "type": [ + "array", + "null" + ] + }, + "id": { + "description": "<em>ID of the task</em><br><strong>required field</strong><br>you can get this ID in the response of the <a href=\"https://docs.dataforseo.com/v3/on_page/task_post/\">Task POST</a> endpoint<br>example:<br>\"07131248-1535-0216-1000-17384017ad04\"", + "type": "string" + }, + "limit": { + "description": "<em>the maximum number of returned links</em><br>optional field<br>default value: <code>100</code><br>maximum value: <code>1000</code>", + "type": [ + "integer", + "null" + ] + }, + "offset": { + "description": "<em>offset in the results array of returned links</em><br>optional field<br>default value: <code>0</code><br>maximum value: <code>2000000</code><br>if you specify the <code>10</code> value, the first ten links in the results array will be omitted and the data will be provided for the successive links", + "type": [ + "integer", + "null" + ] + }, + "page_from": { + "description": "<em>relative page URL</em><br>optional field<br>if you use this field, the API response will contain only links from the specified page<br>note that in this field you can specify relative URLs only", + "type": [ + "string", + "null" + ] + }, + "page_to": { + "description": "<em>relative page URL</em><br>optional field<br>if you use this field, the API response will contain only internal links pointing to the specified page<br>note that in this field you can specify relative URLs only", + "type": [ + "string", + "null" + ] + }, + "search_after_token": { + "description": "<em>token for subsequent requests</em><br>optional field<br>provided in the identical filed of the response to each request;<br>use this parameter to avoid timeouts while trying to obtain over <code>20,000</code> results in a single request;<br>by specifying the unique <code>search_after_token</code> value from the response array, you will get the subsequent results of the initial task;<br><code>search_after_token</code> values are unique for each subsequent task ;<br><strong>Note:</strong> if the <code>search_after_token</code> is specified in the request, all other parameters should be identical to the previous request", + "type": [ + "string", + "null" + ] + }, + "tag": { + "description": "<em>user-defined task identifier</em><br>optional field<br><em>the character limit is 255</em><br>you can use this parameter to identify the task and match it with the result<br>you will find the specified <code>tag</code> value in the <code>data</code> object of the response", + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + } +] - removed
Input schema / properties / body / items / propertiesRemoved value: -{ - "filters": { - "description": "array of results filtering parameters optional field you can add several filters at once (8 filters maximum) you should set a logical operator and, or between the conditions the following operators are supported: regex, not_regex, =, , in, not_in, like, not_like you can use the % operator with like and not_like to match any string of zero or more characters example: [\"direction\",\"=\",\"external\"] [[\"domain_to\",\"\",\"example.com\"], \"and\", [\"link_from\",\"not_like\",\"%example.com/blog%\"]] [[\"direction\",\"=\",\"external\"], \"and\", [[\"link_from\",\"like\",\"%example.com/blog%\"],\"or\",[\"link_from\",\"like\",\"%example.com/help%\"]]] The full list of possible filters is available by this link.", - "items": {}, - "type": "array" - }, - "id": { - "description": "ID of the task required field you can get this ID in the response of the Task POST endpoint example: “07131248-1535-0216-1000-17384017ad04”", - "type": "string" - }, - "limit": { - "description": "the maximum number of returned links optional field default value: 100 maximum value: 1000", - "type": "integer" - }, - "offset": { - "description": "offset in the results array of returned links optional field default value: 0 maximum value: 2000000 if you specify the 10 value, the first ten links in the results array will be omitted and the data will be provided for the successive links", - "type": "integer" - }, - "page_from": { - "description": "relative page URL optional field if you use this field, the API response will contain only links from the specified page note that in this field you can specify relative URLs only", - "type": "string" - }, - "page_to": { - "description": "relative page URL optional field if you use this field, the API response will contain only internal links pointing to the specified page note that in this field you can specify relative URLs only", - "type": "string" - }, - "search_after_token": { - "description": "token for subsequent requests optional field provided 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", - "type": "string" - }, - "tag": { - "description": "user-defined task identifier optional field the character limit is 255 you can use this parameter to identify the task and match it with the result you will find the specified tag value in the data object of the response", - "type": "string" - } -} - removed
Input schema / properties / body / items / requiredRemoved value: -[ - "id" -] - changed
Input schema / properties / body / items / typePrevious value: -"object"New value: +[ + "object", + "null" +] - changed
Input schema / requiredPrevious value: -[ - "body" -]New value: +[] - added
Output schema / x-fastmcp-wrap-resultAdded value: +true
- Changed
post_dataforseo_on_page_microdata7 fields changed- added
Input schema / properties / body / exampleAdded value: +[ + { + "id": "02241700-1535-0216-0000-034137259bc1", + "url": "https://dataforseo.com/apis" + } +] - added
Input schema / properties / body / items / anyOfAdded value: +[ + { + "example": [ + { + "id": "02241700-1535-0216-0000-034137259bc1", + "url": "https://dataforseo.com/apis" + } + ], + "properties": { + "id": { + "description": "<em>ID of the task</em><br><strong>required field</strong><br>you can get this ID in the response of the <a href=\"/v3/on_page/task_post/\">Task POST</a> endpoint<br>example:<br><code>\"07131248-1535-0216-1000-17384017ad04\"</code>", + "type": "string" + }, + "tag": { + "description": "<em>user-defined task identifier</em><br>optional field<br><em>the character limit is 255</em><br>you can use this parameter to identify the task and match it with the result<br>you will find the specified <code>tag</code> value in the <code>data</code> object of the response", + "type": [ + "string", + "null" + ] + }, + "url": { + "description": "<em>resource URL</em><br><strong>required field</strong><br>you can get this URL in the response of the <a href=\"/v3/on_page/pages/\">Pages</a> endpoint<br>example:<br><code>https://dataforseo.com/apis</code>", + "type": "string" + } + }, + "type": "object" + } +] - removed
Input schema / properties / body / items / propertiesRemoved value: -{ - "id": { - "description": "ID of the task required field you can get this ID in the response of the Task POST endpoint example: \"07131248-1535-0216-1000-17384017ad04\"", - "type": "string" - }, - "tag": { - "description": "user-defined task identifier optional field the character limit is 255 you can use this parameter to identify the task and match it with the result you will find the specified tag value in the data object of the response", - "type": "string" - }, - "url": { - "description": "resource URL required field you can get this URL in the response of the Pages endpoint example: https://dataforseo.com/apis", - "type": "string" - } -} - removed
Input schema / properties / body / items / requiredRemoved value: -[ - "id", - "url" -] - changed
Input schema / properties / body / items / typePrevious value: -"object"New value: +[ + "object", + "null" +] - changed
Input schema / requiredPrevious value: -[ - "body" -]New value: +[] - added
Output schema / x-fastmcp-wrap-resultAdded value: +true
- Changed
post_dataforseo_on_page_non_indexable7 fields changed- added
Input schema / properties / body / exampleAdded value: +[ + { + "filters": [ + [ + "reason", + "=", + "robots_txt" + ], + "and", + [ + "url", + "like", + "%go%" + ] + ], + "id": "07281559-0695-0216-0000-c269be8b7592", + "limit": 10 + } +] - added
Input schema / properties / body / items / anyOfAdded value: +[ + { + "example": [ + { + "filters": [ + [ + "reason", + "=", + "robots_txt" + ], + "and", + [ + "url", + "like", + "%go%" + ] + ], + "id": "07281559-0695-0216-0000-c269be8b7592", + "limit": 10 + } + ], + "properties": { + "filters": { + "description": "<em>array of results filtering parameters</em><br>optional field<br><strong>you can add several filters at once (8 filters maximum)</strong><br>you should set a logical operator <code>and</code>, <code>or</code> between the conditions<br>the following operators are supported:<br><code>regex</code>, <code>not_regex</code>, <code><</code>, <code><=</code>, <code>></code>, <code>>=</code>, <code>=</code>, <code><></code>, <code>in</code>, <code>not_in</code>, <code>like</code>, <code>not_like</code><br>you can use the <code>%</code> operator with <code>like</code> and <code>not_like</code> to match any string of zero or more characters<br>example:<br><code>[[\"reason\",\"<>\",\"robots_txt\"],<br>\"and\",<br>[\"url\",\"not_like\",\"%/wp-admin/%\"]]</code><p><code>[[\"url\",\"not_like\",\"%/wp-admin/%\"],<br>\"and\",<br>[[\"reason\",\"<>\",\"meta_tag\"],\"or\",[\"reason\",\"<>\",\"http_header\"]]]</code><p>The full list of possible filters is available <a href=\"/v3/on_page/filters_and_thresholds/?bash\" target=\"_blank\" rel=\"noopener noreferrer\">by this link.</a>", + "items": { + "type": [ + "object", + "null" + ] + }, + "type": [ + "array", + "null" + ] + }, + "id": { + "description": "<em>ID of the task</em><br><strong>required field</strong><br>you can get this ID in the response of the <a href=\"/v3/on_page/task_post/\">Task POST</a> endpoint<br>example:<br>\"07131248-1535-0216-1000-17384017ad04\"", + "type": "string" + }, + "limit": { + "description": "<em>the maximum number of returned pages</em><br>optional field<br>default value: <code>100</code><br>maximum value: <code>1000</code>", + "type": [ + "integer", + "null" + ] + }, + "offset": { + "description": "<em>offset in the results array of returned pages</em><br>optional field<br>default value: <code>0</code><br>maximum value: <code>2000000</code><br>if you specify the <code>10</code> value, the first ten pages in the results array will be omitted and the data will be provided for the successive pages", + "type": [ + "integer", + "null" + ] + } + }, + "type": "object" + } +] - removed
Input schema / properties / body / items / propertiesRemoved value: -{ - "filters": { - "description": "array of results filtering parameters optional field you can add several filters at once (8 filters maximum) you should set a logical operator and, or between the conditions the following operators are supported: regex, not_regex, <, <=, >, >=, =, <>, in, not_in, like, not_like you can use the % operator with like and not_like to match any string of zero or more characters example: [[\"reason\",\"<>\",\"robots_txt\"], \"and\", [\"url\",\"not_like\",\"%/wp-admin/%\"]] [[\"url\",\"not_like\",\"%/wp-admin/%\"], \"and\", [[\"reason\",\"<>\",\"meta_tag\"],\"or\",[\"reason\",\"<>\",\"http_header\"]]] The full list of possible filters is available by this link.", - "items": {}, - "type": "array" - }, - "id": { - "description": "ID of the task required field you can get this ID in the response of the Task POST endpoint example: “07131248-1535-0216-1000-17384017ad04”", - "type": "string" - }, - "limit": { - "description": "the maximum number of returned pages optional field default value: 100 maximum value: 1000", - "type": "integer" - }, - "offset": { - "description": "offset in the results array of returned pages optional field default value: 0 maximum value: 2000000 if 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", - "type": "integer" - } -} - removed
Input schema / properties / body / items / requiredRemoved value: -[ - "id" -] - changed
Input schema / properties / body / items / typePrevious value: -"object"New value: +[ + "object", + "null" +] - changed
Input schema / requiredPrevious value: -[ - "body" -]New value: +[] - added
Output schema / x-fastmcp-wrap-resultAdded value: +true
- Removed
post_dataforseo_on_page_page_screenshot - Changed
post_dataforseo_on_page_raw_html7 fields changed- added
Input schema / properties / body / exampleAdded value: +[ + { + "id": "07281559-0695-0216-0000-c269be8b7592", + "url": "https://dataforseo.com/apis" + } +] - added
Input schema / properties / body / items / anyOfAdded value: +[ + { + "example": [ + { + "id": "07281559-0695-0216-0000-c269be8b7592", + "url": "https://dataforseo.com/apis" + } + ], + "properties": { + "id": { + "description": "<em>ID of the task</em><br><strong>required field</strong><br>you can get this ID in the response of the <a href=\"/v3/on_page/task_post/\">Task POST</a> endpoint<br>example:<br>\"07131248-1535-0216-1000-17384017ad04\"", + "type": "string" + }, + "url": { + "description": "<em>page url</em><br><strong>required field</strong><br>the absolute URL of a page to request HTML<br><strong>Note:</strong> this field is optional if the task was set using the <a href=\"/v3/on_page/instant_pages/\">Instant Pages endpoint</a>", + "type": "string" + } + }, + "type": "object" + } +] - removed
Input schema / properties / body / items / propertiesRemoved value: -{ - "id": { - "description": "ID of the task required field you can get this ID in the response of the Task POST endpoint example: “07131248-1535-0216-1000-17384017ad04”", - "type": "string" - }, - "url": { - "description": "page url required field the absolute URL of a page to request HTML Note: this field is optional if the task was set using the Instant Pages endpoint", - "type": "string" - } -} - removed
Input schema / properties / body / items / requiredRemoved value: -[ - "id" -] - changed
Input schema / properties / body / items / typePrevious value: -"object"New value: +[ + "object", + "null" +] - changed
Input schema / requiredPrevious value: -[ - "body" -]New value: +[] - added
Output schema / x-fastmcp-wrap-resultAdded value: +true
- Changed
post_dataforseo_on_page_resources7 fields changed- added
Input schema / properties / body / exampleAdded value: +[ + { + "filters": [ + [ + "resource_type", + "=", + "image" + ], + "and", + [ + "size", + ">", + 100000 + ] + ], + "id": "07281559-0695-0216-0000-c269be8b7592", + "limit": 10, + "order_by": [ + "size,desc" + ] + } +] - added
Input schema / properties / body / items / anyOfAdded value: +[ + { + "example": [ + { + "filters": [ + [ + "resource_type", + "=", + "image" + ], + "and", + [ + "size", + ">", + 100000 + ] + ], + "id": "07281559-0695-0216-0000-c269be8b7592", + "limit": 10, + "order_by": [ + "size,desc" + ] + } + ], + "properties": { + "filters": { + "description": "<em>array of results filtering parameters</em><br>optional field<br><strong>you can add several filters at once (8 filters maximum)</strong><br>you should set a logical operator <code>and</code>, <code>or</code> between the conditions<br>the following operators are supported:<br><code>regex</code>, <code>not_regex</code>, <code><</code>, <code><=</code>, <code>></code>, <code>>=</code>, <code>=</code>, <code><></code>, <code>in</code>, <code>not_in</code>, <code>like</code>, <code>not_like</code><br>you can use the <code>%</code> operator with <code>like</code> and <code>not_like</code> to match any string of zero or more characters<br>example:<br><code>[\"resource_type\",\"=\",\"stylesheet\"]</code><p><code>[[\"resource_type\",\"=\",\"image\"],<br>\"and\",[\"checks.is_https\",\"=\",false]]</code><p><code>[[\"fetch_timing.duration_time\",\">\",1],\"and\",[[\"total_transfer_size\",\">\",100],\"or\",[\"checks.high_loading_time\",\"=\",true]]]</code><p>The full list of possible filters is available <a href=\"/v3/on_page/filters_and_thresholds/?bash\" rel=\"noopener noreferrer\" target=\"_blank\">by this link.</a>", + "items": { + "type": [ + "object", + "null" + ] + }, + "type": [ + "array", + "null" + ] + }, + "id": { + "description": "<em>ID of the task</em><br><strong>required field</strong><br>you can get this ID in the response of the <a href=\"/v3/on_page/task_post/\">Task POST</a> endpoint<br>example:<br>\"07131248-1535-0216-1000-17384017ad04\"", + "type": "string" + }, + "limit": { + "description": "<em>the maximum number of returned resources</em><br>optional field<br>default value: <code>100</code><br>maximum value: <code>1000</code>", + "type": [ + "integer", + "null" + ] + }, + "offset": { + "description": "<em>offset in the results array of returned resources</em><br>optional field<br>default value: <code>0</code><br>maximum value: <code>2000000</code><br>if you specify the <code>10</code> value, the first ten resources in the results array will be omitted and the data will be provided for the successive resources", + "type": [ + "integer", + "null" + ] + }, + "order_by": { + "description": "<em>results sorting rules</em><br>optional field<br>you can use the same values as in the <code>filters</code> array to sort the results<br>possible sorting types:<br><code>asc</code> - results will be sorted in the ascending order<br><code>desc</code> - results will be sorted in the descending order<br>you should use a comma to set up a sorting type<br>example:<br><code>[\"size,desc\"]</code><br><strong>note that you can set no more than three sorting rules in a single request</strong><br>you should use a comma to separate several sorting rules<br>example:<br><code>[\"size,desc\",\"fetch_timing.fetch_end,desc\"]</code>", + "items": { + "type": "string" + }, + "type": [ + "array", + "null" + ] + }, + "relevant_pages_filters": { + "description": "<em>filter the resources by relevant pages</em><br>optional field<br>you can use this field to obtain resources from pages matching to the defined parameters<br>you can apply the same filters here as available for the <a href=\"/v3/on_page/pages/\" rel=\"noopener noreferrer\" target=\"_blank\">pages endpoint</a><br><strong>you can add several filters at once (8 filters maximum)</strong><br>you should set a logical operator <code>and</code>, <code>or</code> between the conditions<br>the following operators are supported:<br><code>regex</code>, <code>not_regex</code>, <code><</code>, <code><=</code>, <code>></code>, <code>>=</code>, <code>=</code>, <code><></code>, <code>in</code>, <code>not_in</code>, <code>like</code>, <code>not_like</code><br>you can use the <code>%</code> operator with <code>like</code> and <code>not_like</code> to match any string of zero or more characters<br>example:<br><code>[\"checks.no_image_title\",\"=\",true]</code>", + "items": { + "type": "string" + }, + "type": [ + "array", + "null" + ] + }, + "search_after_token": { + "description": "<em>token for subsequent requests</em><br>optional field<br>provided in the identical filed of the response to each request;<br>use this parameter to avoid timeouts while trying to obtain over <code>20,000</code> results in a single request;<br>by specifying the unique <code>search_after_token</code> value from the response array, you will get the subsequent results of the initial task;<br><code>search_after_token</code> values are unique for each subsequent task ;<br><strong>Note:</strong> if the <code>search_after_token</code> is specified in the request, all other parameters should be identical to the previous request", + "type": [ + "string", + "null" + ] + }, + "tag": { + "description": "<em>user-defined task identifier</em><br>optional field<br><em>the character limit is 255</em><br>you can use this parameter to identify the task and match it with the result<br>you will find the specified <code>tag</code> value in the <code>data</code> object of the response", + "type": [ + "string", + "null" + ] + }, + "url": { + "description": "<em>page URL</em><br>optional field<br>specify this field if you want to get the resources for a specific page<br>note that to obtain resource's <code>meta</code> from a particular URL, you should specify the URL in this field;<br>if you do not indicate a <code>url</code> when setting a task, resource's <code>meta</code> in the results will be returned based on the data from the page where our crawler first saw the resource", + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + } +] - removed
Input schema / properties / body / items / propertiesRemoved value: -{ - "filters": { - "description": "array of results filtering parameters optional field you can add several filters at once (8 filters maximum) you should set a logical operator and, or between the conditions the following operators are supported: regex, not_regex, , , >, >=, =, , in, not_in, like, not_like you can use the % operator with like and not_like to match any string of zero or more characters example: [\"resource_type\",\"=\",\"stylesheet\"] [[\"resource_type\",\"=\",\"image\"], \"and\",[\"checks.is_https\",\"=\",false]] [[\"fetch_timing.duration_time\",\">\",1],\"and\",[[\"total_transfer_size\",\">\",100],\"or\",[\"checks.high_loading_time\",\"=\",true]]] The full list of possible filters is available by this link.", - "items": {}, - "type": "array" - }, - "id": { - "description": "ID of the task required field you can get this ID in the response of the Task POST endpoint example: “07131248-1535-0216-1000-17384017ad04”", - "type": "string" - }, - "limit": { - "description": "the maximum number of returned resources optional field default value: 100 maximum value: 1000", - "type": "integer" - }, - "offset": { - "description": "offset in the results array of returned resources optional field default value: 0 maximum value: 2000000 if you specify the 10 value, the first ten resources in the results array will be omitted and the data will be provided for the successive resources", - "type": "integer" - }, - "order_by": { - "description": "results sorting rules optional field you can use the same values as in the filters array to sort the results possible sorting types: asc – results will be sorted in the ascending order desc – results will be sorted in the descending order you should use a comma to set up a sorting type example: [\"size,desc\"] note that you can set no more than three sorting rules in a single request you should use a comma to separate several sorting rules example: [\"size,desc\",\"fetch_timing.fetch_end,desc\"]", - "items": { - "type": "string" - }, - "type": "array" - }, - "relevant_pages_filters": { - "description": "filter the resources by relevant pages optional field you can use this field to obtain resources from pages matching to the defined parameters you can apply the same filters here as available for the pages endpoint you can add several filters at once (8 filters maximum) you should set a logical operator and, or between the conditions the following operators are supported: regex, not_regex, , , >, >=, =, , in, not_in, like, not_like you can use the % operator with like and not_like to match any string of zero or more characters example: [\"checks.no_image_title\",\"=\",true]", - "items": {}, - "type": "array" - }, - "search_after_token": { - "description": "token for subsequent requests optional field provided 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", - "type": "string" - }, - "tag": { - "description": "user-defined task identifier optional field the character limit is 255 you can use this parameter to identify the task and match it with the result you will find the specified tag value in the data object of the response", - "type": "string" - }, - "url": { - "description": "page URL optional field specify this field if you want to get the resources for a specific page note that to obtain resource’s meta from a particular URL, you should specify the URL in this field; if you do not indicate a url when setting a task, resource’s meta in the results will be returned based on the data from the page where our crawler first saw the resource", - "type": "string" - } -} - removed
Input schema / properties / body / items / requiredRemoved value: -[ - "id" -] - changed
Input schema / properties / body / items / typePrevious value: -"object"New value: +[ + "object", + "null" +] - changed
Input schema / requiredPrevious value: -[ - "body" -]New value: +[] - added
Output schema / x-fastmcp-wrap-resultAdded value: +true
- Changed
post_dataforseo_on_page_submit7 fields changed- added
Input schema / properties / body / exampleAdded value: +[ + { + "custom_js": "meta = {}; meta.url = document.URL; meta;", + "enable_javascript": true, + "load_resources": true, + "max_crawl_pages": 10, + "pingback_url": "https://your-server.com/pingscript?id=$id&tag=$tag", + "tag": "some_string_123", + "target": "dataforseo.com" + } +] - added
Input schema / properties / body / items / anyOfAdded value: +[ + { + "example": [ + { + "custom_js": "meta = {}; meta.url = document.URL; meta;", + "enable_javascript": true, + "load_resources": true, + "max_crawl_pages": 10, + "pingback_url": "https://your-server.com/pingscript?id=$id&tag=$tag", + "tag": "some_string_123", + "target": "dataforseo.com" + } + ], + "properties": { + "accept_language": { + "description": "<em>language header for accessing the website</em><br>optional field<br>all locale formats are supported (xx, xx-XX, xxx-XX, etc.)<br><strong>Note:</strong> if you do not specify this parameter, some websites may deny access; in this case, pages will be returned with the <code>\"type\":\"broken</code> in the response array", + "type": [ + "string", + "null" + ] + }, + "allow_subdomains": { + "description": "<em>include pages on subdomains</em><br>optional field<br>set to <code>true</code> if you want to crawl all subdomains of a target website<br>default value: <code>false</code>", + "type": [ + "boolean", + "null" + ] + }, + "allowed_subdomains": { + "description": "<em>subdomains to crawl</em><br>optional field<br>specify subdomains that you want to crawl<br>example: <code>[\"blog.site.com\", \"my.site.com\", \"shop.site.com\"]</code><br><strong>Note:</strong> to use this parameter, the <code>allow_subdomains</code> parameter should be set to <code>false</code>;<br>otherwise, the content of <code>allowed_subdomains</code> field will be ignored and the results will be returned for all subdomains", + "items": { + "type": "string" + }, + "type": [ + "array", + "null" + ] + }, + "browser_preset": { + "description": "<em>preset for browser screen parameters</em><br>optional field<br>if you use this field, you don't need to indicate <code>browser_screen_width</code>, <code>browser_screen_height</code>, <code>browser_screen_scale_factor</code>possible values:<br><code>desktop</code>, <code>mobile</code>, <code>tablet</code><code>desktop</code> preset will apply the following values:<code>browser_screen_width: 1920</code><br><code>browser_screen_height: 1080</code><br><code>browser_screen_scale_factor: 1</code><code>mobile</code> preset will apply the following values:<code>browser_screen_width: 390</code><br><code>browser_screen_height: 844</code><br><code>browser_screen_scale_factor: 3</code><code>tablet</code> preset will apply the following values:<code>browser_screen_width: 1024</code><br><code>browser_screen_height: 1366</code><br><code>browser_screen_scale_factor: 2</code><br><strong>Note:</strong> to use this parameter, set <code>enable_javascript</code> or <code>enable_browser_rendering</code> to <code>true</code>", + "type": [ + "string", + "null" + ] + }, + "browser_screen_height": { + "description": "<em>browser screen height</em><br>optional field<br>you can set a custom browser screen height to perform an audit for a particular device;<br>if you use this field, you don't need to indicate <code>browser_preset</code> as it will be ignored;<br><strong>Note:</strong> to use this parameter, set <code>enable_javascript</code> or <code>enable_browser_rendering</code> to <code>true</code>minimum value, in pixels: <code>240</code><br>maximum value, in pixels: <code>9999</code>", + "type": [ + "integer", + "null" + ] + }, + "browser_screen_scale_factor": { + "description": "<em>browser screen scale factor</em><br>optional field<br>you can set a custom browser screen resolution ratio to perform audit for a particular device;<br>if you use this field, you don't need to indicate <code>browser_preset</code> as it will be ignored;<br><strong>Note:</strong> to use this parameter, set <code>enable_javascript</code> or <code>enable_browser_rendering</code> to <code>true</code>minimum value: <code>0.5</code><br>maximum value: <code>3</code>", + "type": [ + "number", + "null" + ] + }, + "browser_screen_width": { + "description": "<em>browser screen width</em><br>optional field<br>you can set a custom browser screen width to perform audit for a particular device;<br>if you use this field, you don't need to indicate <code>browser_preset</code> as it will be ignored;<br><strong>Note:</strong> to use this parameter, set <code>enable_javascript</code> or <code>enable_browser_rendering</code> to <code>true</code>minimum value, in pixels: <code>240</code><br>maximum value, in pixels: <code>9999</code>", + "format": "int64", + "type": [ + "integer", + "null" + ] + }, + "calculate_keyword_density": { + "description": "<em>calculate keyword density for the target domain</em><br>optional field<br>set to <code>true</code> if you want to calculate keyword density for website pages<br>default value: <code>false</code><br><strong>Note:</strong> if you use this parameter, additional charges will apply; learn more about the cost of tasks with this parameter <a href=\"https://dataforseo.com/help-center/cost-of-onpage-api-parameters\" target=\"_blank\" rel=\"noopener noreferrer\">in our help article</a><br>once the crawl is completed, you can obtain keyword density values with <a href=\"/v3/on_page/keyword_density?bash\" target=\"_blank\" rel=\"noopener noreferrer\">the Keyword Density endpoint</a>", + "type": [ + "boolean", + "null" + ] + }, + "check_spell": { + "description": "<em>check spelling</em><br>optional field<br>set to <code>true</code> to check spelling on a website using <a href=\"http://hunspell.github.io/\" target=\"_blank\" rel=\"noopener noreferrer\">Hunspell</a> library<br>default value: <code>false</code>", + "type": [ + "boolean", + "null" + ] + }, + "check_spell_exceptions": { + "description": "<em>words excluded from spell check</em><br>optional field<br>specify the words that you want to exclude from spell check<br>maximum word length: 100 characters<br>maximum amount of words: 1000<br>example: <code>\"SERP\", \"minifiers\", \"JavaScript\"</code>", + "items": { + "type": "string" + }, + "type": [ + "array", + "null" + ] + }, + "check_spell_language": { + "description": "<em>language of the spell check</em><br>optional field<br>supported languages: 'hy', 'eu', 'bg', 'ca', 'hr', 'cs', 'da', 'nl', 'en', 'eo', 'et', 'fo', 'fa', 'fr', 'fy', 'gl', 'ka', 'de', 'el', 'he', 'hu', 'is', 'ia', 'ga', 'it', 'rw', 'la', 'lv', 'lt', 'mk', 'mn', 'ne', 'nb', 'nn', 'pl', 'pt', 'ro', 'gd', 'sr', 'sk', 'sl', 'es', 'sv', 'tr', 'tk', 'uk', 'vi'<br><strong>Note:</strong> if no language is specified, it will be set automatically based on page content", + "type": [ + "string", + "null" + ] + }, + "checks_threshold": { + "additionalProperties": { + "format": "int64", + "type": [ + "integer", + "null" + ] + }, + "description": "<em>custom threshold values for checks</em><br>optional field<br>you can specify custom threshold values for the parameters included in the <code>checks</code> object of OnPage API responses;<br><strong>Note:</strong> only integer threshold values can be modified;<br>for example, the <code>high_loading_time</code> and <code>large_page_size</code> parameters are set to 3 seconds and 1 megabyte respectively by default;<br>if you want to change these thresholds to 1 second and 1000 kbytes, use the following snippet:<br>`\"checks_threshold\": {<br>\"high_loading_time\": 1,<br>\"large_page_size\": 1000<br>}`<br>available customizable parameters with default values:<br>`\"title_too_short\", default value: 30, type: \"int\"<br>\"title_too_long\", default value: 65, type: \"int\"<br>\"small_page_size\", default value: 1024, type: \"int\"<br>\"large_page_size\", default value: 1048576 (1024 * 1024), type: \"int\"<br>\"low_character_count\", default value: 1024, type: \"int\"<br>\"high_character_count\", default value: 256000 (250 * 1024), type: \"int\"<br>\"low_content_rate\", default value: 0.1, type: \"float\"<br>\"high_content_rate\", default value: 0.9, type: \"float\"<br>\"high_loading_time\", default value: 3000, type: \"int\"<br>\"high_waiting_time\", default value: 1500, type: \"int\"<br>\"low_readability_rate\", default value: 15.0, type: \"float\"<br>\"irrelevant_description\", default value: 0.2, type: \"float\"<br>\"irrelevant_title\", default value: 0.3, type: \"float\"<br>\"irrelevant_meta_keywords\", default value: 0.6, type: \"float\"`", + "type": [ + "object", + "null" + ] + }, + "crawl_delay": { + "description": "<em>delay between hits, ms</em><br>optional field<br>the custom delay between crawler hits to the server<br>default value: <code>2000</code>", + "type": [ + "integer", + "null" + ] + }, + "crawl_sitemap_only": { + "description": "<em>crawl only pages indicated in the sitemap</em><br>optional field<br>set to <code>true</code> if you want to crawl only the pages indicated in the sitemap<br>if you set this parameter to <code>true</code> and do not specify <code>custom_sitemap</code>, we will crawl the default sitemap<br>default value: <code>false</code><br><strong>Note:</strong> if you want to use this parameter, <code>respect_sitemap</code> should be <code>true</code>", + "type": [ + "boolean", + "null" + ] + }, + "custom_js": { + "description": "<em>custom javascript</em><br>optional field<br><strong>Note</strong> that the execution time for the script you enter here should be 700 ms maximum, for example, you can use the following JS snippet to check if the website contains Google Tag Manager as a <code>scr</code> attribute:<br><code>let meta = { haveGoogleAnalytics: false, haveTagManager: false };rnfor (var i = 0; i < document.scripts.length; i++) {rn let src = document.scripts[i].getAttribute(\"src\");rn if (src != undefined) {rn if (src.indexOf(\"analytics.js\") >= 0)rn meta.haveGoogleAnalytics = true;rntif (src.indexOf(\"gtm.js\") >= 0)rn meta.haveTagManager = true;rn }rn}rnmeta;</code>the returned value depends on what you specified in this field. For instance, if you specify the following script:<br>`meta = {}; meta.url = document.URL; meta.test = 'test'; meta;`<br>as a response you will receive the following data:<br>`\"custom_js_response\": {<br>\"url\": \"https://dataforseo.com/\",<br>\"test\": \"test\"<br>}`<br><strong>Note:</strong> the length of the script you enter must be no more than 2000 characters", + "type": [ + "string", + "null" + ] + }, + "custom_robots_txt": { + "description": "<em>custom robots.txt settings</em><br>optional field<br>example: <code>Disallow: /directory1/</code>", + "type": [ + "string", + "null" + ] + }, + "custom_sitemap": { + "description": "<em>custom sitemap url</em><br>optional field<br>the URL of the page where the alternative sitemap is located<br><strong>Note:</strong> if you want to use this parameter, <code>respect_sitemap</code> should be <code>true</code>", + "type": [ + "string", + "null" + ] + }, + "custom_user_agent": { + "description": "<em>custom user agent</em><br>optional field<br>custom user agent for crawling a website<br>example: <code>Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36<br></code><br>default value: <code>Mozilla/5.0 (compatible; RSiteAuditor)</code>", + "type": [ + "string", + "null" + ] + }, + "disable_cookie_popup": { + "description": "<em>disable the cookie popup</em><br>optional field<br>set to <code>true</code> if you want to disable the popup requesting cookie consent from the user;<br>default value:<br><code>false</code>", + "type": [ + "boolean", + "null" + ] + }, + "disable_page_checks": { + "description": "<em>prevent certain page checks from running</em><br>optional field<br>specify certain <code>checks</code> to prevent them from running and impacting the <code>onpage_score</code>example:<br><code>\"disable_page_checks\": [\"is_5xx_code\", \"is_4xx_code\"]</code>", + "items": { + "type": "string" + }, + "type": [ + "array", + "null" + ] + }, + "disable_sitewide_checks": { + "description": "<em>prevent certain sitewide checks from running</em><br>optional field<br>specify the following <code>checks</code> to prevent them from running on the <code>target</code> website:<br><code>\"test_page_not_found\"</code><br><code>\"test_canonicalization\"</code><br><code>\"test_https_redirect\"</code><br><code>\"test_directory_browsing\"</code>example:<br><code>\"disable_sitewide_checks\": [\"test_directory_browsing\", \"test_page_not_found\"]</code>learn more on <a href=\"https://dataforseo.com/help-center/how-to-disable-sitewide-checks-in-onpage-api\" target=\"_blank\" rel=\"noopener noreferrer\">our help center</a>", + "items": { + "type": "string" + }, + "type": [ + "array", + "null" + ] + }, + "disallowed_subdomains": { + "description": "<em>subdomains not to crawl</em><br>optional field<br>specify subdomains that you don't want to crawl<br>example: <code>[\"status.site.com\", \"docs.site.com\"]</code><br><strong>Note:</strong> to use this parameter, the <code>allow_subdomains</code> parameter should be set to <code>true</code>", + "items": { + "type": "string" + }, + "type": [ + "array", + "null" + ] + }, + "enable_browser_rendering": { + "description": "<em>emulate browser rendering to measure Core Web Vitals</em><br>optional field<br>by using this parameter you will be able to emulate a browser when loading a web page;<br><code>enable_browser_rendering</code> loads styles, images, fonts, animations, videos, and other resources on a page;<br>default value: <code>false</code><br>set to <code>true</code> to obtain Core Web Vitals (FID, CLS, LCP) metrics in the response;<br><strong>if you use this field, <code>enable_javascript</code>, and <code>load_resources</code> parameters must be set to <code>true</code></strong><br><strong>Note:</strong> if you use this parameter, additional charges will apply; learn more about the cost of tasks with this parameter <a href=\"https://dataforseo.com/help-center/cost-of-onpage-api-parameters\" target=\"_blank\" rel=\"noopener noreferrer\">in our help article</a>; the cost can be calculated on the <a href=\"https://dataforseo.com/pricing/on-page/onpage-api\" target=\"_blank\" rel=\"noopener noreferrer\">Pricing Page</a>", + "type": [ + "boolean", + "null" + ] + }, + "enable_content_parsing": { + "description": "<em>parse content on crawled pages</em><br>optional field<br>set to <code>true</code> to use the <a href=\"/v3/on_page/content_parsing/live/\" target=\"_blank\" rel=\"noopener noreferrer\">OnPage Content Parsing endpoint</a><br>default value: <code>false</code>", + "type": [ + "boolean", + "null" + ] + }, + "enable_javascript": { + "description": "<em>load javascript on a page</em><br>optional field<br>set to <code>true</code> if you want to load the scripts available on a page<br>default value: <code>false</code><br><strong>Note:</strong> if you use this parameter, additional charges will apply; learn more about the cost of tasks with this parameter <a href=\"https://dataforseo.com/help-center/cost-of-onpage-api-parameters\" target=\"_blank\" rel=\"noopener noreferrer\">in our help article</a>; the cost can be calculated on the <a href=\"https://dataforseo.com/pricing/on-page/onpage-api\" target=\"_blank\" rel=\"noopener noreferrer\">Pricing Page</a>", + "type": [ + "boolean", + "null" + ] + }, + "enable_www_redirect_check": { + "description": "<em>check if the domain implemented the www redirection</em><br>optional field<br>set to <code>true</code> if you want to check if the requested domain implemented the www to non-www or non-www to www redirect;<br>default value: <code>false</code>", + "type": [ + "boolean", + "null" + ] + }, + "enable_xhr": { + "description": "<em>enable XMLHttpRequest on a page</em><br>optional field<br>set to <code>true</code> if you want our crawler to request data from a web server using the XMLHttpRequest object<br>default value: <code>false</code>;if you use this field, <code>enable_javascript</code> must be set to <code>true</code>;", + "type": [ + "boolean", + "null" + ] + }, + "force_sitewide_checks": { + "description": "<em>enable sitewide checks when crawling a single page</em><br>optional field<br>set to <code>true</code> to get data on sitewide checks when crawling a single page;<br>default value: <code>false</code>", + "type": [ + "boolean", + "null" + ] + }, + "load_resources": { + "description": "<em>load resources</em><br>optional field<br>set to <code>true</code> if you want to load image, stylesheets, scripts, and broken resources<br>default value: <code>false</code><br><strong>Note:</strong> if you use this parameter, additional charges will apply; learn more about the cost of tasks with this parameter <a href=\"https://dataforseo.com/help-center/cost-of-onpage-api-parameters\" target=\"_blank\" rel=\"noopener noreferrer\">in our help article</a>; the cost can be calculated on the <a href=\"https://dataforseo.com/pricing/on-page/onpage-api\" target=\"_blank\" rel=\"noopener noreferrer\">Pricing Page</a>", + "type": [ + "boolean", + "null" + ] + }, + "max_crawl_depth": { + "description": "<em>crawl depth</em><br>optional field<br>the linking depth of the pages to crawl;<br>for example, starting page of the crawl is level 0, pages that have links from that page are level 1, etc.", + "type": [ + "integer", + "null" + ] + }, + "max_crawl_pages": { + "description": "<em>crawled pages limit</em><br><strong>required field</strong><br>the number of pages to crawl on the specified domain<br><strong>Note:</strong><br>if you set <code>max_crawl_pages</code> to 1 and do not specify <code>start_url</code> or set a homepage in it, the following sitewide checks will be disabled:<br><code>test_canonicalization</code>, <code>enable_www_redirect_check</code>, <code>test_hidden_server_signature</code>, <code>test_page_not_found</code>, <code>test_directory_browsing</code>, <code>test_https_redirect</code><br>to enable them anyway, set <code>force_sitewide_checks</code> to <code>true</code>if you set <code>max_crawl_pages</code> to 1 and specify <code>start_url</code> other than a homepage, all sitewide checks will be disabled;<br>to enable them anyway, set <code>force_sitewide_checks</code> to <code>true</code>", + "type": "integer" + }, + "pingback_url": { + "description": "<em>notification URL of a completed task</em><br>optional field<br>when a task is completed we will notify you by GET request sent to the URL you have specified<br>you can use the ‘$id’ string as a <code>$id</code> variable and ‘$tag’ as urlencoded <code>$tag</code> variable. We will set the necessary values before sending the request.<br>example:<br><code>http://your-server.com/pingscript?id=$id</code><br><code>http://your-server.com/pingscript?id=$id&tag=$tag</code><br><strong>Note:</strong> special characters in <code>pingback_url</code> will be urlencoded;<br>i.a., the <code>#</code> character will be encoded into <code>%23</code><p>learn more on our <a href=\"https://dataforseo.com/help-center/pingbacks-postbacks-with-dataforseo-api\" target=\"_blank\" rel=\"noopener noreferrer\">Help Center</a>", + "type": [ + "string", + "null" + ] + }, + "priority_urls": { + "description": "<em>urls to be crawled bypassing the queue</em><br>optional field<br>URLs specified in this array will be crawled in the first instance, bypassing the crawling queue;<br><strong>Note:</strong> you should specify the absolute URL;<br>you can specify up to <strong>20 URLs</strong>;<br>all URLs in the array must belong to the <code>target</code> domain;<br>subdomains will be ignored unless the <code>allow_subdomains</code> parameter is set to <code>true</code>example:<br>`\"priority_urls\": [<br>\"https://dataforseo.com/apis/serp-api\",<br>\"https://dataforseo.com/contact\"<br>]`", + "items": { + "type": "string" + }, + "type": [ + "array", + "null" + ] + }, + "respect_sitemap": { + "description": "<em>respect sitemap when crawling</em><br>optional field<br>set to <code>true</code> if you want to follow the order of pages indicated in the primary sitemap when crawling;<br>default value: <code>false</code><br><strong>Note:</strong> if set to <code>true</code>, the <code>click_depth</code> value in the API response will equal <code>0</code>;<br>the <code>max_crawl_depth</code> field of the request will be ignored, you can specify the number of pages to crawl using the <code>max_crawl_pages</code> parameter", + "type": [ + "boolean", + "null" + ] + }, + "return_despite_timeout": { + "description": "<em>return data on pages despite the timeout error</em><br>optional field<br>if <code>true</code>, the data will be provided on pages that failed to load within 120 seconds and responded with a timeout error;<br>default value: <code>false</code>", + "type": [ + "boolean", + "null" + ] + }, + "robots_txt_merge_mode": { + "description": "<em>merge with or override robots.txt settings</em><br>optional field<br>possible values: <code>merge</code>, <code>override</code>;<br>set to <code>override</code> if you want to ignore website crawling restrictions and other robots.txt settings<br>default value: <code>merge</code>;<br><strong>Note:</strong> if set to <code>override</code>, specify the <code>custom_robots_txt</code> parameter", + "type": [ + "string", + "null" + ] + }, + "start_url": { + "description": "<em>the first url to crawl </em><br>optional field<br><strong>Note:</strong> you should specify an absolute URL<br>if you want to crawl a single page, specify its URL in this field and additionally set the <code>max_crawl_pages</code> parameter to <code>1</code><br>you can also use the <a href=\"/v3/on_page/instant_pages/?bash\" target=\"_blank\" rel=\"noopener noreferrer\">live Instant Pages endpoint</a> to get page-specific data", + "type": [ + "string", + "null" + ] + }, + "store_raw_html": { + "description": "<em>store HTML of crawled pages</em><br>optional field<br>set to <code>true</code> if you want to get the HTML of the page using the <a href=\"/v3/on_page/raw_html/\" target=\"_blank\" rel=\"noopener noreferrer\">OnPage Raw HTML endpoint</a><br>default value: <code>false</code>", + "type": [ + "boolean", + "null" + ] + }, + "support_cookies": { + "description": "<em>support cookies on crawled pages</em><br>optional field<br>set to <code>true</code> to support cookies when crawling the pages<br>default value: <code>false</code>", + "type": [ + "boolean", + "null" + ] + }, + "switch_pool": { + "description": "<em>switch proxy pool</em><br>optional field<br>if <code>true</code>, additional proxy pools will be used to obtain the requested data;<br>the parameter can be used if a multitude of tasks is set simultaneously, resulting in occasional <code>rate-limit</code> and/or <code>site_unreachable</code> errors", + "type": [ + "boolean", + "null" + ] + }, + "tag": { + "description": "<em>user-defined task identifier</em><br>optional field<br><em>the character limit is 255</em><br>you can use this parameter to identify the task and match it with the result<br>you will find the specified <code>tag</code> value in the <code>data</code> object of the response", + "type": [ + "string", + "null" + ] + }, + "target": { + "description": "<em>target domain</em><br><strong>required field</strong><br>domain name should be specified without <code>https://</code> and <code>www.</code><br>if you specify the page URL, the results will be returned for the domain included in the URL", + "type": "string" + }, + "validate_micromarkup": { + "description": "<em>enable microdata validation</em><br>optional field<br>set to <code>true</code> if you want to use the <a href=\"/v3/on_page/microdata/\" target=\"_blank\" rel=\"noopener noreferrer\">OnPage API Microdata endpoint</a><br>default value: <code>false</code>", + "type": [ + "boolean", + "null" + ] + } + }, + "type": "object" + } +] - removed
Input schema / properties / body / items / propertiesRemoved value: -{ - "accept_language": { - "description": "language header for accessing the website optional field all locale formats are supported (xx, xx-XX, xxx-XX, etc.) Note: if you do not specify this parameter, some websites may deny access; in this case, pages will be returned with the \"type\":\"broken in the response array", - "type": "string" - }, - "allow_subdomains": { - "description": "include pages on subdomains optional field set to true if you want to crawl all subdomains of a target website default value: false", - "type": "boolean" - }, - "allowed_subdomains": { - "description": "subdomains to crawl optional field specify subdomains that you want to crawl example: [\"blog.site.com\", \"my.site.com\", \"shop.site.com\"] Note: to use this parameter, the allow_subdomains parameter should be set to false; otherwise, the content of allowed_subdomains field will be ignored and the results will be returned for all subdomains", - "items": { - "type": "string" - }, - "type": "array" - }, - "browser_preset": { - "description": "preset for browser screen parameters optional field if you use this field, you don’t need to indicate browser_screen_width, browser_screen_height, browser_screen_scale_factorpossible values: desktop, mobile, tabletdesktop preset will apply the following values:browser_screen_width: 1920 browser_screen_height: 1080 browser_screen_scale_factor: 1mobile preset will apply the following values:browser_screen_width: 390 browser_screen_height: 844 browser_screen_scale_factor: 3tablet preset will apply the following values:browser_screen_width: 1024 browser_screen_height: 1366 browser_screen_scale_factor: 2 Note: to use this parameter, set enable_javascript or enable_browser_rendering to true", - "type": "string" - }, - "browser_screen_height": { - "description": "browser screen height optional field you can set a custom browser screen height to perform an audit for a particular device; if you use this field, you don’t need to indicate browser_preset as it will be ignored; Note: to use this parameter, set enable_javascript or enable_browser_rendering to trueminimum value, in pixels: 240 maximum value, in pixels: 9999", - "type": "integer" - }, - "browser_screen_scale_factor": { - "description": "browser screen scale factor optional field you can set a custom browser screen resolution ratio to perform audit for a particular device; if you use this field, you don’t need to indicate browser_preset as it will be ignored; Note: to use this parameter, set enable_javascript or enable_browser_rendering to trueminimum value: 0.5 maximum value: 3", - "type": "number" - }, - "browser_screen_width": { - "description": "browser screen width optional field you can set a custom browser screen width to perform audit for a particular device; if you use this field, you don’t need to indicate browser_preset as it will be ignored; Note: to use this parameter, set enable_javascript or enable_browser_rendering to trueminimum value, in pixels: 240 maximum value, in pixels: 9999", - "type": "integer" - }, - "calculate_keyword_density": { - "description": "calculate keyword density for the target domain optional field set to true if you want to calculate keyword density for website pages default value: false Note: if you use this parameter, additional charges will apply; learn more about the cost of tasks with this parameter in our help article once the crawl is completed, you can obtain keyword density values with the Keyword Density endpoint", - "type": "boolean" - }, - "check_spell": { - "description": "check spelling optional field set to true to check spelling on a website using Hunspell library default value: false", - "type": "boolean" - }, - "check_spell_exceptions": { - "description": "words excluded from spell check optional field specify the words that you want to exclude from spell check maximum word length: 100 characters maximum amount of words: 1000 example: \"SERP\", \"minifiers\", \"JavaScript\"", - "items": { - "type": "string" - }, - "type": "array" - }, - "check_spell_language": { - "description": "language of the spell check optional field supported languages: ‘hy’, ‘eu’, ‘bg’, ‘ca’, ‘hr’, ‘cs’, ‘da’, ‘nl’, ‘en’, ‘eo’, ‘et’, ‘fo’, ‘fa’, ‘fr’, ‘fy’, ‘gl’, ‘ka’, ‘de’, ‘el’, ‘he’, ‘hu’, ‘is’, ‘ia’, ‘ga’, ‘it’, ‘rw’, ‘la’, ‘lv’, ‘lt’, ‘mk’, ‘mn’, ‘ne’, ‘nb’, ‘nn’, ‘pl’, ‘pt’, ‘ro’, ‘gd’, ‘sr’, ‘sk’, ‘sl’, ‘es’, ‘sv’, ‘tr’, ‘tk’, ‘uk’, ‘vi’ Note: if no language is specified, it will be set automatically based on page content", - "type": "string" - }, - "checks_threshold": { - "description": "custom threshold values for checks optional field you can specify custom threshold values for the parameters included in the checks object of OnPage API responses; Note: only integer threshold values can be modified; for example, the high_loading_time and large_page_size parameters are set to 3 seconds and 1 megabyte respectively by default; if you want to change these thresholds to 1 second and 1000 kbytes, use the following snippet: \"checks_threshold\": { \"high_loading_time\": 1, \"large_page_size\": 1000 }available customizable parameters with default values: \"title_too_short\", default value: 30, type: \"int\" \"title_too_long\", default value: 65, type: \"int\" \"small_page_size\", default value: 1024, type: \"int\" \"large_page_size\", default value: 1048576 (1024 * 1024), type: \"int\" \"low_character_count\", default value: 1024, type: \"int\" \"high_character_count\", default value: 256000 (250 * 1024), type: \"int\" \"low_content_rate\", default value: 0.1, type: \"float\" \"high_content_rate\", default value: 0.9, type: \"float\" \"high_loading_time\", default value: 3000, type: \"int\" \"high_waiting_time\", default value: 1500, type: \"int\" \"low_readability_rate\", default value: 15.0, type: \"float\" \"irrelevant_description\", default value: 0.2, type: \"float\" \"irrelevant_title\", default value: 0.3, type: \"float\" \"irrelevant_meta_keywords\", default value: 0.6, type: \"float\"", - "type": "object" - }, - "crawl_delay": { - "description": "delay between hits, ms optional field the custom delay between crawler hits to the server default value: 2000", - "type": "integer" - }, - "crawl_sitemap_only": { - "description": "crawl only pages indicated in the sitemap optional field set to true if you want to crawl only the pages indicated in the sitemap if you set this parameter to true and do not specify custom_sitemap, we will crawl the default sitemap default value: false Note: if you want to use this parameter, respect_sitemap should be true", - "type": "boolean" - }, - "custom_js": { - "description": "custom javascript optional field Note that the execution time for the script you enter here should be 700 ms maximum, for example, you can use the following JS snippet to check if the website contains Google Tag Manager as a scr attribute: let meta = { haveGoogleAnalytics: false, haveTagManager: false };rnfor (var i = 0; i < document.scripts.length; i++) {rn let src = document.scripts[i].getAttribute(\"src\");rn if (src!= undefined) {rn if (src.indexOf(\"analytics.js\") >= 0)rn meta.haveGoogleAnalytics = true;rntif (src.indexOf(\"gtm.js\") >= 0)rn meta.haveTagManager = true;rn }rn}rnmeta;the returned value depends on what you specified in this field. For instance, if you specify the following script: `meta = {}; meta.url = document.URL; meta.test = 'test'; meta;` as a response you will receive the following data: `\"custom_js_response\": { \"url\": \"https://dataforseo.com/\", \"test\": \"test\" }` Note: the length of the script you enter must be no more than 2000 characters", - "type": "string" - }, - "custom_robots_txt": { - "description": "custom robots.txt settings optional field example: Disallow: /directory1/", - "type": "string" - }, - "custom_sitemap": { - "description": "custom sitemap url optional field the URL of the page where the alternative sitemap is located Note: if you want to use this parameter, respect_sitemap should be true", - "type": "string" - }, - "custom_user_agent": { - "description": "custom user agent optional field custom user agent for crawling a website example: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36 default value: Mozilla/5.0 (compatible; RSiteAuditor)", - "type": "string" - }, - "disable_cookie_popup": { - "description": "disable the cookie popup optional field set to true if you want to disable the popup requesting cookie consent from the user; default value: false", - "type": "boolean" - }, - "disable_page_checks": { - "description": "prevent certain page checks from running optional field specify certain checks to prevent them from running and impacting the onpage_scoreexample: \"disable_page_checks\": [\"is_5xx_code\", \"is_4xx_code\"]", - "items": { - "type": "string" - }, - "type": "array" - }, - "disable_sitewide_checks": { - "description": "prevent certain sitewide checks from running optional field specify the following checks to prevent them from running on the target website: \"test_page_not_found\" \"test_canonicalization\" \"test_https_redirect\" \"test_directory_browsing\"example: \"disable_sitewide_checks\": [\"test_directory_browsing\", \"test_page_not_found\"]learn more on our help center", - "items": { - "type": "string" - }, - "type": "array" - }, - "disallowed_subdomains": { - "description": "subdomains not to crawl optional field specify subdomains that you don’t want to crawl example: [\"status.site.com\", \"docs.site.com\"] Note: to use this parameter, the allow_subdomains parameter should be set to true", - "items": { - "type": "string" - }, - "type": "array" - }, - "enable_browser_rendering": { - "description": "emulate browser rendering to measure Core Web Vitals optional field by using this parameter you will be able to emulate a browser when loading a web page; enable_browser_rendering loads styles, images, fonts, animations, videos, and other resources on a page; default value: false set to true to obtain Core Web Vitals (FID, CLS, LCP) metrics in the response; if you use this field, enable_javascript, and load_resources parameters must be set to true Note: if you use this parameter, additional charges will apply; learn more about the cost of tasks with this parameter in our help article", - "type": "boolean" - }, - "enable_content_parsing": { - "description": "parse content on crawled pages optional field set to true to use the OnPage Content Parsing endpoint default value: false", - "type": "boolean" - }, - "enable_javascript": { - "description": "load javascript on a page optional field set to true if you want to load the scripts available on a page default value: false Note: if you use this parameter, additional charges will apply; learn more about the cost of tasks with this parameter in our help article", - "type": "boolean" - }, - "enable_www_redirect_check": { - "description": "check if the domain implemented the www redirection optional field set to true if you want to check if the requested domain implemented the www to non-www or non-www to www redirect; default value: false", - "type": "boolean" - }, - "enable_xhr": { - "description": "enable XMLHttpRequest on a page optional field set to true if you want our crawler to request data from a web server using the XMLHttpRequest object default value: false;if you use this field, enable_javascript must be set to true;", - "type": "boolean" - }, - "force_sitewide_checks": { - "description": "enable sitewide checks when crawling a single page optional field set to true to get data on sitewide checks when crawling a single page; default value: false", - "type": "boolean" - }, - "load_resources": { - "description": "load resources optional field set to true if you want to load image, stylesheets, scripts, and broken resources default value: false Note: if you use this parameter, additional charges will apply; learn more about the cost of tasks with this parameter in our help article", - "type": "boolean" - }, - "max_crawl_depth": { - "description": "crawl depth optional field the linking depth of the pages to crawl; for example, starting page of the crawl is level 0, pages that have links from that page are level 1, etc.", - "type": "integer" - }, - "max_crawl_pages": { - "description": "crawled pages limit required field the number of pages to crawl on the specified domain Note: if you set max_crawl_pages to 1 and do not specify start_url or set a homepage in it, the following sitewide checks will be disabled: test_canonicalization, enable_www_redirect_check, test_hidden_server_signature, test_page_not_found, test_directory_browsing, test_https_redirect to enable them anyway, set force_sitewide_checks to trueif you set max_crawl_pages to 1 and specify start_url other than a homepage, all sitewide checks will be disabled; to enable them anyway, set force_sitewide_checks to true", - "type": "integer" - }, - "pingback_url": { - "description": "notification URL of a completed task optional field when a task is completed we will notify you by GET request sent to the URL you have specified you can use the ‘$id’ string as a $id variable and ‘$tag’ as urlencoded $tag variable. We will set the necessary values before sending the request. example: http://your-server.com/pingscript?id=$id http://your-server.com/pingscript?id=$id&tag=$tag Note: special characters in pingback_url will be urlencoded; i.a., the # character will be encoded into %23 learn more on our Help Center", - "type": "string" - }, - "priority_urls": { - "description": "urls to be crawled bypassing the queue optional field URLs specified in this array will be crawled in the first instance, bypassing the crawling queue; Note: you should specify the absolute URL; you can specify up to 20 URLs; all URLs in the array must belong to the target domain; subdomains will be ignored unless the allow_subdomains parameter is set to trueexample: \"priority_urls\": [ \"https://dataforseo.com/apis/serp-api\", \"https://dataforseo.com/contact\" ]", - "items": { - "type": "string" - }, - "type": "array" - }, - "respect_sitemap": { - "description": "respect sitemap when crawling optional field set to true if you want to follow the order of pages indicated in the primary sitemap when crawling; default value: false Note: if set to true, the click_depth value in the API response will equal 0; the max_crawl_depth field of the request will be ignored, you can specify the number of pages to crawl using the max_crawl_pages parameter", - "type": "boolean" - }, - "return_despite_timeout": { - "description": "return data on pages despite the timeout error optional field if true, the data will be provided on pages that failed to load within 120 seconds and responded with a timeout error; default value: false", - "type": "boolean" - }, - "robots_txt_merge_mode": { - "description": "merge with or override robots.txt settings optional field possible values: merge, override; set to override if you want to ignore website crawling restrictions and other robots.txt settings default value: merge; Note: if set to override, specify the custom_robots_txt parameter", - "type": "string" - }, - "start_url": { - "description": "the first url to crawl optional field Note: you should specify an absolute URL if you want to crawl a single page, specify its URL in this field and additionally set the max_crawl_pages parameter to 1 you can also use the live Instant Pages endpoint to get page-specific data", - "type": "string" - }, - "store_raw_html": { - "description": "store HTML of crawled pages optional field set to true if you want to get the HTML of the page using the OnPage Raw HTML endpoint default value: false", - "type": "boolean" - }, - "support_cookies": { - "description": "support cookies on crawled pages optional field set to true to support cookies when crawling the pages default value: false", - "type": "boolean" - }, - "switch_pool": { - "description": "switch proxy pool optional field if true, additional proxy pools will be used to obtain the requested data; the parameter can be used if a multitude of tasks is set simultaneously, resulting in occasional rate-limit and/or site_unreachable errors", - "type": "boolean" - }, - "tag": { - "description": "user-defined task identifier optional field the character limit is 255 you can use this parameter to identify the task and match it with the result you will find the specified tag value in the data object of the response", - "type": "string" - }, - "target": { - "description": "target domain required field domain name should be specified without https:// and www. if you specify the page URL, the results will be returned for the domain included in the URL", - "type": "string" - }, - "validate_micromarkup": { - "description": "enable microdata validation optional field set to true if you want to use the OnPage API Microdata endpoint default value: false", - "type": "boolean" - } -} - removed
Input schema / properties / body / items / requiredRemoved value: -[ - "target", - "max_crawl_pages" -] - changed
Input schema / properties / body / items / typePrevious value: -"object"New value: +[ + "object", + "null" +] - changed
Input schema / requiredPrevious value: -[ - "body" -]New value: +[] - added
Output schema / x-fastmcp-wrap-resultAdded value: +true
- Changed
post_dataforseo_on_page_uncrawlable_resources7 fields changed- added
Input schema / properties / body / exampleAdded value: +[ + { + "filters": [ + [ + "meta.content_type", + "=", + "image/jpeg" + ], + "and", + [ + "url", + "like", + "%go%" + ] + ], + "id": "07281559-0695-0216-0000-c269be8b7592", + "limit": 10 + } +] - added
Input schema / properties / body / items / anyOfAdded value: +[ + { + "example": [ + { + "filters": [ + [ + "meta.content_type", + "=", + "image/jpeg" + ], + "and", + [ + "url", + "like", + "%go%" + ] + ], + "id": "07281559-0695-0216-0000-c269be8b7592", + "limit": 10 + } + ], + "properties": { + "filters": { + "description": "<em>array of results filtering parameters</em><br>optional field<br><strong>you can add several filters at once (8 filters maximum)</strong><br>you should set a logical operator <code>and</code>, <code>or</code> between the conditions<br>the following operators are supported:<br><code>regex</code>, <code>not_regex</code>, <code><</code>, <code><=</code>, <code>></code>, <code>>=</code>, <code>=</code>, <code><></code>, <code>in</code>, <code>not_in</code>, <code>like</code>, <code>not_like</code><br>you can use the <code>%</code> operator with <code>like</code> and <code>not_like</code> to match any string of zero or more characters<br>example:<br><code> [[\"meta.content_type\",\"=\",\"image/jpeg\"],<br>\"and\",<br>[\"url\",\"not_like\",\"%/help-center/%\"]]</code><p>The full list of possible filters is available <a href=\"/v3/on_page/filters_and_thresholds/?bash\" target=\"_blank\" rel=\"noopener noreferrer\">by this link.</a>", + "items": { + "type": [ + "object", + "null" + ] + }, + "type": [ + "array", + "null" + ] + }, + "id": { + "description": "<em>ID of the task</em><br><strong>required field</strong><br>you can get this ID in the response of the <a href=\"/v3/on_page/task_post/\">Task POST</a> endpoint<br>example:<br>\"07131248-1535-0216-1000-17384017ad04\"", + "type": "string" + }, + "limit": { + "description": "<em>the maximum number of returned uncrawlable resources</em><br>optional field<br>default value: <code>100</code><br>maximum value: <code>1000</code>", + "type": [ + "integer", + "null" + ] + }, + "offset": { + "description": "<em>offset in the results array of returned uncrawlable resources</em><br>optional field<br>default value: <code>0</code><br> maximum value: <code>2000000</code><br>if you specify the <code>10</code> value, the first ten invalid resources in the results array will be omitted and the data will be provided for the successive invalid resources", + "type": [ + "integer", + "null" + ] + }, + "order_by": { + "description": "<em>results sorting rules</em><br>optional field<br>you can use the same values as in the <code>filters</code> array to sort the results<br>possible sorting types:<br><code>asc</code> - results will be sorted in the ascending order<br><code>desc</code> - results will be sorted in the descending order<br>you should use a comma to set up a sorting type<br>example:<br><code>[\"meta.content_type,desc\"]</code><br><strong>note that you can set no more than three sorting rules in a single request</strong><br>you should use a comma to separate several sorting rules<br>example:<br><code>[\"meta.content_type,asc\",\"fetch_time,desc\"]</code>", + "items": { + "type": "string" + }, + "type": [ + "array", + "null" + ] + } + }, + "type": "object" + } +] - removed
Input schema / properties / body / items / propertiesRemoved value: -{ - "filters": { - "description": "array of results filtering parameters optional field you can add several filters at once (8 filters maximum) you should set a logical operator and, or between the conditions the following operators are supported: regex, not_regex, , , >, >=, =, , in, not_in, like, not_like you can use the % operator with like and not_like to match any string of zero or more characters example: [[\"meta.content_type\",\"=\",\"image/jpeg\"], \"and\", [\"url\",\"not_like\",\"%/help-center/%\"]]The full list of possible filters is available by this link.", - "items": {}, - "type": "array" - }, - "id": { - "description": "ID of the task required field you can get this ID in the response of the Task POST endpoint example: \"07131248-1535-0216-1000-17384017ad04\"", - "type": "string" - }, - "limit": { - "description": "the maximum number of returned uncrawlable resources optional field default value: 100 maximum value: 1000", - "type": "integer" - }, - "offset": { - "description": "offset in the results array of returned uncrawlable resources optional field default value: 0 maximum value: 2000000 if you specify the 10 value, the first ten invalid resources in the results array will be omitted and the data will be provided for the successive invalid resources", - "type": "integer" - }, - "order_by": { - "description": "results sorting rules optional field you can use the same values as in the filters array to sort the results possible sorting types: asc - results will be sorted in the ascending order desc - results will be sorted in the descending order you should use a comma to set up a sorting type example: [\"meta.content_type,desc\"] note that you can set no more than three sorting rules in a single request you should use a comma to separate several sorting rules example: [\"meta.content_type,asc\",\"fetch_time,desc\"]", - "items": { - "type": "string" - }, - "type": "array" - } -} - removed
Input schema / properties / body / items / requiredRemoved value: -[ - "id" -] - changed
Input schema / properties / body / items / typePrevious value: -"object"New value: +[ + "object", + "null" +] - changed
Input schema / requiredPrevious value: -[ - "body" -]New value: +[] - added
Output schema / x-fastmcp-wrap-resultAdded value: +true
- Changed
post_dataforseo_on_page_waterfall7 fields changed- added
Input schema / properties / body / exampleAdded value: +[ + { + "id": "08101204-0696-0216-0000-644a7b21a48a", + "url": "https://dataforseo.com/tag/broken-links" + } +] - added
Input schema / properties / body / items / anyOfAdded value: +[ + { + "example": [ + { + "id": "08101204-0696-0216-0000-644a7b21a48a", + "url": "https://dataforseo.com/tag/broken-links" + } + ], + "properties": { + "id": { + "description": "<em>ID of the task</em><br><strong>required field</strong><br>you can get this ID in the response of the <a href=\"/v3/on_page/task_post/\">Task POST</a> endpoint<br>example:<br>\"07131248-1535-0216-1000-17384017ad04\"", + "type": "string" + }, + "tag": { + "description": "<em>user-defined task identifier</em><br>optional field<br><em>the character limit is 255</em><br>you can use this parameter to identify the task and match it with the result<br>you will find the specified <code>tag</code> value in the <code>data</code> object of the response", + "type": [ + "string", + "null" + ] + }, + "url": { + "description": "<em>page URL</em><br><strong>required field</strong><br>specify the pages you want to receive timing for", + "type": "string" + } + }, + "type": "object" + } +] - removed
Input schema / properties / body / items / propertiesRemoved value: -{ - "id": { - "description": "ID of the task required field you can get this ID in the response of the Task POST endpoint example: “07131248-1535-0216-1000-17384017ad04”", - "type": "string" - }, - "tag": { - "description": "user-defined task identifier optional field the character limit is 255 you can use this parameter to identify the task and match it with the result you will find the specified tag value in the data object of the response", - "type": "string" - }, - "url": { - "description": "page URL required field specify the pages you want to receive timing for", - "type": "string" - } -} - removed
Input schema / properties / body / items / requiredRemoved value: -[ - "id", - "url" -] - changed
Input schema / properties / body / items / typePrevious value: -"object"New value: +[ + "object", + "null" +] - changed
Input schema / requiredPrevious value: -[ - "body" -]New value: +[] - added
Output schema / x-fastmcp-wrap-resultAdded value: +true
- Changed
search17 fields changed- added
Input schema / $schemaAdded value: +"https://json-schema.org/draft/2020-12/schema" - removed
Input schema / properties / category / anyOfRemoved value: -[ - { - "enum": [ - "seo", - "finance", - "social", - "search", - "sales", - "mail" - ], - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / category / defaultRemoved value: -null - changed
Input schema / properties / category / descriptionPrevious value: -"Restrict to one category (seo, finance, social, search, sales, mail). Omit to search everything."New value: +"Restrict retrieval to one category. Omit to search everything. (AIsa-only: tool-router has no equivalent.)" - added
Input schema / properties / category / enumAdded value: +[ + "seo", + "finance", + "social", + "search", + "sales", + "mail" +] - added
Input schema / properties / category / typeAdded value: +"string" - added
Input schema / properties / known_fieldsAdded value: +{ + "additionalProperties": true, + "default": {}, + "description": "Known values such as ticker, URL, provider, or identifier that improve retrieval.", + "type": "object" +} - changed
Input schema / properties / limit / descriptionPrevious value: -"Maximum candidates, 1-10"New value: +"Maximum number of additional direct tool candidates." - added
Input schema / properties / limit / maximumAdded value: +20 - added
Input schema / properties / limit / minimumAdded value: +1 - added
Input schema / properties / provider_filtersAdded value: +{ + "default": [], + "description": "Optional exact catalog provider keys used to narrow retrieval (for example similarweb). Do not use display brands. Omit this field if the exact key is unknown.", + "items": { + "type": "string" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": true +} - changed
Input schema / properties / query / descriptionPrevious value: -"What you need, in plain language, e.g. 'backlinks of a domain', 'recent tweets by a user', 'insider trades for AAPL'. English works best."New value: +"Natural-language capability or task to discover." - added
Input schema / properties / query / maxLengthAdded value: +2000 - added
Input schema / properties / query / minLengthAdded value: +1 - added
Input schema / properties / session_idAdded value: +{ + "description": "Reuse the session_id returned by Search in all subsequent tool calls for this task. If omitted, a new session is created.", + "maxLength": 128, + "pattern": "^[A-Za-z0-9_-]*$", + "type": "string" +} - added
Output schema / propertiesAdded value: +{ + "next_steps_guidance": { + "anyOf": [ + { + "type": "null" + }, + { + "type": "array" + } + ], + "items": { + "type": "string" + } + }, + "plan": { + "additionalProperties": false, + "anyOf": [ + { + "type": "null" + }, + { + "type": "object" + } + ], + "properties": { + "canonical_use_case": { + "type": "string" + }, + "description": { + "type": "string" + }, + "known_pitfalls": { + "anyOf": [ + { + "type": "null" + }, + { + "type": "array" + } + ], + "items": { + "type": "string" + } + }, + "plan_ref": { + "type": "string" + }, + "primary_tools": { + "anyOf": [ + { + "type": "null" + }, + { + "type": "array" + } + ], + "items": { + "type": "string" + } + }, + "recommended_steps": { + "anyOf": [ + { + "type": "null" + }, + { + "type": "array" + } + ], + "items": { + "type": "string" + } + }, + "related_tools": { + "anyOf": [ + { + "type": "null" + }, + { + "type": "array" + } + ], + "items": { + "type": "string" + } + } + }, + "required": [ + "canonical_use_case", + "description", + "known_pitfalls", + "plan_ref", + "primary_tools", + "recommended_steps", + "related_tools" + ] + }, + "retrieval_mode": { + "anyOf": [ + { + "type": "null" + }, + { + "type": "string" + } + ] + }, + "search_id": { + "type": "string" + }, + "session_id": { + "description": "Reuse the session_id returned by Search in all subsequent tool calls for this task. If omitted, a new session is created.", + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9_-]{1,128}$", + "type": "string" + }, + "tools": { + "anyOf": [ + { + "type": "null" + }, + { + "type": "array" + } + ], + "items": { + "additionalProperties": false, + "properties": { + "arguments_schema": { + "additionalProperties": true, + "anyOf": [ + { + "type": "null" + }, + { + "type": "object" + } + ] + }, + "description": { + "type": "string" + }, + "execution_supported": { + "description": "Whether this router can execute and quote the operation; false retains documentation and discovery only.", + "type": "boolean" + }, + "execution_unsupported_reason": { + "description": "Why execution and quoting remain unavailable through this router.", + "type": "string" + }, + "has_full_schema": { + "type": "boolean" + }, + "match_reasons": { + "anyOf": [ + { + "type": "null" + }, + { + "type": "array" + } + ], + "items": { + "type": "string" + } + }, + "price": { + "additionalProperties": true, + "type": "object" + }, + "retrieval_debug": { + "additionalProperties": false, + "anyOf": [ + { + "type": "null" + }, + { + "type": "object" + } + ], + "properties": { + "fused_rank": { + "type": "integer" + }, + "fused_score": { + "type": "number" + }, + "lexical_rank": { + "type": "integer" + }, + "lexical_score": { + "type": "number" + }, + "rerank_admission_rank": { + "type": "integer" + }, + "rerank_rank": { + "type": "integer" + }, + "rerank_score": { + "anyOf": [ + { + "type": "null" + }, + { + "type": "number" + } + ] + }, + "runtime_availability": { + "type": "string" + }, + "vector_view_ranks": { + "additionalProperties": { + "type": "integer" + }, + "type": "object" + }, + "vector_view_scores": { + "additionalProperties": { + "type": "number" + }, + "type": "object" + } + }, + "required": [ + "fused_rank", + "fused_score", + "lexical_rank", + "lexical_score", + "rerank_admission_rank", + "rerank_rank", + "runtime_availability", + "vector_view_ranks", + "vector_view_scores" + ] + }, + "summary": { + "type": "string" + }, + "tool": { + "type": "string" + } + }, + "required": [ + "description", + "has_full_schema", + "price", + "summary", + "tool" + ], + "type": "object" + } + } +} - added
Output schema / requiredAdded value: +[ + "next_steps_guidance", + "search_id", + "session_id", + "tools" +]
- Changed
use1 field changed- changed
Input schema / properties / max_price_usd / descriptionPrevious value: -"Refuse the call before any spend if it would cost more than this many USD"New value: +"Refuse the call before any spend if its quoted price is above this many USD"
1 tool update
- Changed
get_details1 field changed- added
Input schema / properties / include_documentationAdded value: +{ + "default": false, + "description": "Include the complete native public OpenAPI document, reference closure and scoped completeness. Existing execution schemas remain unchanged.", + "type": "boolean" +}
1 tool update
- Changed
post_dataforseo_on_page_submit3 fields changed- changed
Input schema / properties / body / items / properties / enable_browser_rendering / descriptionPrevious value: -"emulate browser rendering to measure Core Web Vitals optional field by using this parameter you will be able to emulate a browser when loading a web page; enable_browser_rendering loads styles, images, fonts, animations, videos, and other resources on a page; default value: false set to true to obtain Core Web Vitals (FID, CLS, LCP) metrics in the response; if you use this field, enable_javascript, and load_resources parameters must be set to true Note: if you use this parameter, additional charges will apply; learn more about the cost of tasks with this parameter in our help article; the cost can be calculated on the Pricing Page"New value: +"emulate browser rendering to measure Core Web Vitals optional field by using this parameter you will be able to emulate a browser when loading a web page; enable_browser_rendering loads styles, images, fonts, animations, videos, and other resources on a page; default value: false set to true to obtain Core Web Vitals (FID, CLS, LCP) metrics in the response; if you use this field, enable_javascript, and load_resources parameters must be set to true Note: if you use this parameter, additional charges will apply; learn more about the cost of tasks with this parameter in our help article" - changed
Input schema / properties / body / items / properties / enable_javascript / descriptionPrevious value: -"load javascript on a page optional field set to true if you want to load the scripts available on a page default value: false Note: if you use this parameter, additional charges will apply; learn more about the cost of tasks with this parameter in our help article; the cost can be calculated on the Pricing Page"New value: +"load javascript on a page optional field set to true if you want to load the scripts available on a page default value: false Note: if you use this parameter, additional charges will apply; learn more about the cost of tasks with this parameter in our help article" - changed
Input schema / properties / body / items / properties / load_resources / descriptionPrevious value: -"load resources optional field set to true if you want to load image, stylesheets, scripts, and broken resources default value: false Note: if you use this parameter, additional charges will apply; learn more about the cost of tasks with this parameter in our help article; the cost can be calculated on the Pricing Page"New value: +"load resources optional field set to true if you want to load image, stylesheets, scripts, and broken resources default value: false Note: if you use this parameter, additional charges will apply; learn more about the cost of tasks with this parameter in our help article"
9 tool updates
- Changed
get_dataforseo_on_page_summary1 field changed- changed
Input schema / properties / id / descriptionPrevious value: -"DataForSEO task ID."New value: +"task identifier required field you can get this ID in the response of the Task POST endpoint example: “07131248-1535-0216-1000-17384017ad04”"
- Changed
post_dataforseo_on_page_duplicate_content1 field changed- changed
Input schema / properties / body / items / properties / offset / descriptionPrevious value: -"offset in the results array of returned pages optional field default value: 0 if 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"New value: +"offset in the results array of returned pages optional field default value: 0 maximum value: 2000000 if 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"
- Changed
post_dataforseo_on_page_duplicate_tags2 fields changed- changed
Input schema / properties / body / items / properties / offset / descriptionPrevious value: -"offset in the results array of returned pages optional field default value: 0 if 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"New value: +"offset in the results array of returned pages optional field default value: 0 maximum value: 2000000 if 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" - changed
Input schema / properties / body / items / properties / type / descriptionPrevious value: -"duplicate tags type required field indicates the type of duplicate elements found on the pages. The results will depend on the type you specify possible values: duplicate_title, duplicate_description"New value: +"type of element"
- Changed
post_dataforseo_on_page_keyword_density1 field changed- changed
Input schema / properties / body / items / properties / filters / descriptionPrevious value: -"array of results filtering parameters optional field you can add several filters at once (8 filters maximum) you should set a logical operator and, or between the conditions the following operators are supported: regex, not_regex, =, , in, not_in, like, not_like you can use the % operator with like and not_like to match any string of zero or more characters example: [\"keyword\",\"=\",\"%seo%\"] [[\"keyword\",\"=\",\"%seo%\"], \"and\", [\"frequency\",\" [[\"keyword\",\"not_like\",\"%seo%\"], \"and\", [[\"frequency\",\">\",\"6\"],\"or\",[\"density\",\">\",\"0.02\"]]] The full list of possible filters is available by this link."New value: +"array of results filtering parameters optional field you can add several filters at once (8 filters maximum) you should set a logical operator and, or between the conditions the following operators are supported: regex, not_regex, =, <>, in, not_in, like, not_like you can use the % operator with like and not_like to match any string of zero or more characters example: [\"keyword\",\"=\",\"%seo%\"] [[\"keyword\",\"=\",\"%seo%\"], \"and\", [\"frequency\",\"<\",\"6\"]] [[\"keyword\",\"not_like\",\"%seo%\"], \"and\", [[\"frequency\",\">\",\"6\"],\"or\",[\"density\",\">\",\"0.02\"]]] The full list of possible filters is available by this link."
- Changed
post_dataforseo_on_page_links1 field changed- changed
Input schema / properties / body / items / properties / offset / descriptionPrevious value: -"offset in the results array of returned links optional field default value: 0 if you specify the 10 value, the first ten links in the results array will be omitted and the data will be provided for the successive links"New value: +"offset in the results array of returned links optional field default value: 0 maximum value: 2000000 if you specify the 10 value, the first ten links in the results array will be omitted and the data will be provided for the successive links"
- Changed
post_dataforseo_on_page_non_indexable2 fields changed- changed
Input schema / properties / body / items / properties / filters / descriptionPrevious value: -"array of results filtering parameters optional field you can add several filters at once (8 filters maximum) you should set a logical operator and, or between the conditions the following operators are supported: regex, not_regex, , , >, >=, =, , in, not_in, like, not_like you can use the % operator with like and not_like to match any string of zero or more characters example: [\"reason\",\"=\",\"robots_txt\"][[\"reason\",\"\",\"robots_txt\"], \"and\", [\"url\",\"not_like\",\"%/wp-admin/%\"]] [[\"url\",\"not_like\",\"%/wp-admin/%\"], \"and\", [[\"reason\",\"\",\"meta_tag\"],\"or\",[\"reason\",\"\",\"http_header\"]]] The full list of possible filters is available by this link."New value: +"array of results filtering parameters optional field you can add several filters at once (8 filters maximum) you should set a logical operator and, or between the conditions the following operators are supported: regex, not_regex, <, <=, >, >=, =, <>, in, not_in, like, not_like you can use the % operator with like and not_like to match any string of zero or more characters example: [[\"reason\",\"<>\",\"robots_txt\"], \"and\", [\"url\",\"not_like\",\"%/wp-admin/%\"]] [[\"url\",\"not_like\",\"%/wp-admin/%\"], \"and\", [[\"reason\",\"<>\",\"meta_tag\"],\"or\",[\"reason\",\"<>\",\"http_header\"]]] The full list of possible filters is available by this link." - changed
Input schema / properties / body / items / properties / offset / descriptionPrevious value: -"offset in the results array of returned pages optional field default value: 0 if 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"New value: +"offset in the results array of returned pages optional field default value: 0 maximum value: 2000000 if 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"
- Changed
post_dataforseo_on_page_resources1 field changed- changed
Input schema / properties / body / items / properties / offset / descriptionPrevious value: -"offset in the results array of returned resources optional field default value: 0 if you specify the 10 value, the first ten resources in the results array will be omitted and the data will be provided for the successive resources"New value: +"offset in the results array of returned resources optional field default value: 0 maximum value: 2000000 if you specify the 10 value, the first ten resources in the results array will be omitted and the data will be provided for the successive resources"
- Changed
post_dataforseo_on_page_submit1 field changed- changed
Input schema / properties / body / items / properties / custom_js / descriptionPrevious value: -"custom javascript optional field Note that the execution time for the script you enter here should be 700 ms maximum, for example, you can use the following JS snippet to check if the website contains Google Tag Manager as a scr attribute: let meta = { haveGoogleAnalytics: false, haveTagManager: false };\\r\\nfor (var i = 0; i = 0)\\r\\n meta.haveGoogleAnalytics = true;\\r\\n\\tif (src.indexOf(\\\"gtm.js\\\") >= 0)\\r\\n meta.haveTagManager = true;\\r\\n }\\r\\n}\\r\\nmeta;the returned value depends on what you specified in this field. For instance, if you specify the following script: meta = {}; meta.url = document.URL; meta.test = 'test'; meta; as a response you will receive the following data: \"custom_js_response\": { \"url\": \"https://dataforseo.com/\", \"test\": \"test\" } Note: the length of the script you enter must be no more than 2000 characters Note: if you use this parameter, additional charges will apply; learn more about the cost of tasks with this parameter in our help article; the cost can be calculated on the Pricing Page"New value: +"custom javascript optional field Note that the execution time for the script you enter here should be 700 ms maximum, for example, you can use the following JS snippet to check if the website contains Google Tag Manager as a scr attribute: let meta = { haveGoogleAnalytics: false, haveTagManager: false };rnfor (var i = 0; i < document.scripts.length; i++) {rn let src = document.scripts[i].getAttribute(\"src\");rn if (src!= undefined) {rn if (src.indexOf(\"analytics.js\") >= 0)rn meta.haveGoogleAnalytics = true;rntif (src.indexOf(\"gtm.js\") >= 0)rn meta.haveTagManager = true;rn }rn}rnmeta;the returned value depends on what you specified in this field. For instance, if you specify the following script: `meta = {}; meta.url = document.URL; meta.test = 'test'; meta;` as a response you will receive the following data: `\"custom_js_response\": { \"url\": \"https://dataforseo.com/\", \"test\": \"test\" }` Note: the length of the script you enter must be no more than 2000 characters"
- Changed
post_dataforseo_on_page_uncrawlable_resources1 field changed- changed
Input schema / properties / body / items / properties / offset / descriptionPrevious value: -"offset in the results array of returned uncrawlable resources optional field default value: 0 if you specify the 10 value, the first ten invalid resources in the results array will be omitted and the data will be provided for the successive invalid resources"New value: +"offset in the results array of returned uncrawlable resources optional field default value: 0 maximum value: 2000000 if you specify the 10 value, the first ten invalid resources in the results array will be omitted and the data will be provided for the successive invalid resources"
25 tool updates
- First observed
batch_use - First observed
get_dataforseo_on_page_available_filters - First observed
get_dataforseo_on_page_lighthouse_audits - First observed
get_dataforseo_on_page_lighthouse_languages - First observed
get_dataforseo_on_page_lighthouse_versions - First observed
get_dataforseo_on_page_summary - First observed
get_details - First observed
list_categories - First observed
post_dataforseo_on_page_content_parsing - First observed
post_dataforseo_on_page_duplicate_content - First observed
post_dataforseo_on_page_duplicate_tags - First observed
post_dataforseo_on_page_force_stop - First observed
post_dataforseo_on_page_keyword_density - First observed
post_dataforseo_on_page_lighthouse_live_json - First observed
post_dataforseo_on_page_links - First observed
post_dataforseo_on_page_microdata - First observed
post_dataforseo_on_page_non_indexable - First observed
post_dataforseo_on_page_page_screenshot - First observed
post_dataforseo_on_page_raw_html - First observed
post_dataforseo_on_page_resources - First observed
post_dataforseo_on_page_submit - First observed
post_dataforseo_on_page_uncrawlable_resources - First observed
post_dataforseo_on_page_waterfall - First observed
search - First observed
use
Publisher details
- Operator
- AIsa · Publisher source
- Operator website
- https://aisa.one
- Vendor relationship
- Independent
- Documentation
- https://mcp.aisa.one/servers
- Trust center
- Not available
- Restrictions
- No paid plan, admin approval, regional limit or custom OAuth app is needed to connect. Sign-in is OAuth against auth.aisa.one with dynamic client registration (RFC 7591), or an Authorization: Bearer AIsa API key. search, get_details and list_categories are free. use and batch_use are billed per call to the caller's own AIsa key, and max_price_usd refuses anything above a cap before any spend. Some operations are subscription-only on the gateway and answer 402 without the Hive GTM Growth plan.
Related MCP Connectors
Your agent needs the whole search picture — what you rank for, who outranks you, who links to them, what is broken on the site, and whether ChatGPT names you at all. Normally that is three SEO vendors and three subscriptions. **What you can ask for** • "What does this domain rank for, and which competitors take the same keywords?" • "Who links to my competitor and not to me?" • "Crawl this site and list the pages with broken tags or duplicate content." • "Does Perplexity cite us when asked about this category?" • "How hard is this keyword, and what does the SERP look like today?" **How to use it** Point any MCP client at https://mcp.aisa.one/seo/mcp and sign in with OAuth — there is no key to create or paste. 60 tools spanning DataForSEO, Semrush and Ahrefs: SERPs, keywords and difficulty, backlinks and referring domains, on-page crawling, domain authority, and answers from ChatGPT, Claude, Gemini and Perplexity. **Why this rather than the source** Three indexes behind one account, so you can cross-check a number instead of trusting one vendor's version of it. **It is also a door to the rest** The same login reaches 26 sources and 580+ operations. Check the ranking here, then ask the same agent for that competitor's traffic mix, its ad spend, or the person to email — without adding a second server. **What it costs** Finding and inspecting an operation is free. Running one is billed per call at API prices, with no seat and no monthly minimum, and every call takes max_price_usd so an agent cannot overspend by accident. **Where else it reaches** Narrower endpoints: https://mcp.aisa.one/seo-serp/mcp · /seo-keywords/mcp · /seo-backlinks/mcp · /seo-onpage/mcp · /seo-labs/mcp · /seo-ai-visibility/mcp · /seo-content/mcp · /seo-domains/mcp · /seo-business/mcp · /seo-merchant/mcp · /seo-apps/mcp · /seo-serp-other-engines/mcp
Your agent needs the derived numbers — domain authority, what a site ranks for, related and relevant keywords, search intent, and who the real competitors are — for Google, Amazon and the app stores. **What you can ask for** • "What is this domain's authority, and how has its rank history moved?" • "Which keywords does this site rank for, and with what intent?" • "Who are this domain's organic competitors, and where do we overlap?" • "Which keywords does this Amazon product rank for?" • "Compare these two domains keyword by keyword." **How to use it** Point any MCP client at https://mcp.aisa.one/seo-labs/mcp and sign in with OAuth — there is no key to create or paste. 46 tools: ranked, related and relevant keywords, keyword ideas and intent, domain authority and rank history, competitor and intersection analysis, bulk metrics, plus the same shapes for Amazon products and Apple and Google Play apps. **Why this rather than the source** Ahrefs domain rating, Semrush rank history and DataForSEO Labs answering the same questions side by side. **It is also a door to the rest** The same login reaches 26 sources and 580+ operations. Size the competitor here, then ask the same agent for their traffic mix or their contacts — without adding a second server. **What it costs** Finding and inspecting an operation is free. Running one is billed per call at API prices, with no seat and no monthly minimum, and every call takes max_price_usd so an agent cannot overspend by accident. **Where else it reaches** https://mcp.aisa.one/seo/mcp for all of it at once — rankings, keywords, backlinks, site health and AI-answer visibility across DataForSEO, Semrush and Ahrefs.
Your agent needs marketplace data — what a product costs on Amazon and Google Shopping, who the sellers are, what reviewers actually complain about. **What you can ask for** • "What is this ASIN's price history, rating and seller list?" • "Who else sells this product, and at what price?" • "Pull the reviews for this product and group the complaints." • "What comes up on Google Shopping for this query in the UK?" • "Compare these products across both marketplaces." **How to use it** Point any MCP client at https://mcp.aisa.one/seo-merchant/mcp and sign in with OAuth — there is no key to create or paste. 22 tools: Amazon products, ASIN detail and sellers; Google Shopping products, product info, sellers and reviews; live and queued forms, with raw HTML where you need it. **It is also a door to the rest** The same login reaches 26 sources and 580+ operations. Price the product here, then ask the same agent what the brand's site traffic or ad spend looks like — without adding a second server. **What it costs** Finding and inspecting an operation is free. Running one is billed per call at API prices, with no seat and no monthly minimum, and every call takes max_price_usd so an agent cannot overspend by accident. **Where else it reaches** https://mcp.aisa.one/seo/mcp for all of it at once — rankings, keywords, backlinks, site health and AI-answer visibility across DataForSEO, Semrush and Ahrefs.
Your agent needs the open web — searched by more than one engine, and read as clean markdown rather than raw HTML. **What you can ask for** • "Search this question with two providers and tell me where they disagree." • "Scrape these 40 URLs into markdown, in one batch." • "Crawl this documentation site and give me every page." • "Do deep research on this topic and cite the sources." • "Find the academic papers behind this claim." **How to use it** Point any MCP client at https://mcp.aisa.one/search/mcp and sign in with OAuth — there is no key to create or paste. 30 tools across several independent providers: Tavily and Exa search, answers, contents and agent runs; Firecrawl scrape, batch scrape, crawl, map and search; Perplexity Sonar, Sonar Pro, reasoning and deep research; Oxylabs AI search and LLM jobs; OpenAI and Anthropic web search; and scholarly search. **Why this rather than the source** Several independent indexes behind one account, because one engine's blind spot is not visible from inside it. **It is also a door to the rest** The same login reaches 26 sources and 580+ operations. Find the page here, then ask the same agent who links to it or how much traffic it gets — without adding a second server. **What it costs** Finding and inspecting an operation is free. Running one is billed per call at API prices, with no seat and no monthly minimum, and every call takes max_price_usd so an agent cannot overspend by accident. **Where else it reaches** https://mcp.aisa.one/seo-serp/mcp for the Google results page itself, https://mcp.aisa.one/seo-serp-other-engines/mcp for Bing, Baidu and Naver.
Related MCP Servers
- AlicenseAqualityAmaintenanceProvides on-page SEO analysis via MCP tools, including page audits, schema extraction, robots.txt checks, sitemap parsing, and link analysis. No API keys required; works with any MCP-compatible client.56 npmMIT
- AlicenseAqualityDmaintenanceEnables AI agents to perform comprehensive SEO audits on web pages, including meta tags, headings, links, images, performance, and more, via a CLI or MCP server.181MIT
- AlicenseNot gradedqualityDmaintenanceProvides 23 bounded MCP tools for AI agents to perform technical SEO audits, including crawl setup, page analysis, issue detection, and report exports, all while keeping data local.7MIT

atomno-mcp-seo-auditofficial
AlicenseAqualityBmaintenanceMCP server for technical SEO audits, powered by the detail.web engine. Run a site audit straight from your AI agent to get a health score, issues across 8 categories, and a GEO sub-score.887 PyPI1MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.