Felo API PlatformFelo API Platform
v0.1.0-beta
OpenAPI 3.1.0

OnPage API Resources

Server:https://openapi.felo.ai
Client Libraries

DataForSEO

​

SEO, search-engine results, keyword research, backlinks and AI visibility data.

OnPage API Resources

​

The non-page assets a crawl found - images, scripts, stylesheets - with their status codes and sizes. Pages with search_after_token. Reads a finished crawl, so it needs the id from post_dataforseo_on_page_submit and returns crawl_progress plus a crawl_status of max_crawl_pages, pages_in_queue and pages_crawled - check those before trusting a small result, because a crawl still running simply has less to report. For the assets the crawler could not reach at all use post_dataforseo_on_page_uncrawlable_resources. 💰 Free upstream: querying a finished crawl costs nothing, only the crawl itself does.

Body
required
application/json
  • Type: array object[]
    • id
      Type: string
      required

      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”

    • filters
      Type: array

      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.

    • limit
      Type: integer

      the maximum number of returned resources optional field default value: 100 maximum value: 1000

    • offset
      Type: integer

      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

    • order_by
      Type: array string[]

      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"]

    • relevant_pages_filters
      Type: array

      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]

    • search_after_token
      Type: string

      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

    • tag
      Type: string

      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

    • url
      Type: string

      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

Responses
  • 200
    Type: object

    Successful response

    • cost
      Type: number

      total tasks cost, USD

    • status_code
      Type: integer

      general status code you can find the full list of the response codes here Note: we strongly recommend designing a necessary system for handling related exceptional or error conditions

    • status_message
      Type: string

      general informational message you can find the full list of general informational messages here

    • tasks
      Type: array string[]

      array of tasks

    • tasks_count
      Type: integer

      the number of tasks in the tasks array

    • tasks_error
      Type: integer

      the number of tasks in the tasks array returned with an error

    • tasks.cost
      Type: number

      cost of the task, USD

    • tasks.data
      Type: object

      contains the same parameters that you specified in the POST request

    • tasks.id
      Type: string

      task identifier unique task identifier in our system in the UUID format

    • tasks.path
      Type: array string[]

      URL path

    • tasks.result
      Type: array string[]

      array of results

    • tasks.result_count
      Type: integer

      number of elements in the result array

    • tasks.result.crawl_progress
      Type: string

      status of the crawling session possible values: in_progress, finished

    • tasks.result.crawl_status
      Type: object

      details of the crawling session

    • tasks.result.crawl_status.max_crawl_pages
      Type: integer

      maximum number of pages to crawl indicates the max_crawl_pages limit you specified when setting a task

    • tasks.result.crawl_status.pages_crawled
      Type: integer

      number of crawled pages

    • tasks.result.crawl_status.pages_in_queue
      Type: integer

      number of pages that are currently in the crawling queue

    • tasks.result.items
      Type: array string[]

      items array

    • tasks.result.items_count
      Type: integer

      number of items in the results array

    • tasks.result.items.cache_control
      Type: object

      instructions for caching

    • tasks.result.items.cache_control.cachable
      Type: boolean

      indicates whether the resource is cacheable

    • tasks.result.items.cache_control.ttl
      Type: integer

      time to live the amount of time it takes for the browser to cache a resource; measured in milliseconds

    • tasks.result.items.checks
      Type: object

      resource check-ups contents of the array depend on the resource_type

    • tasks.result.items.checks.from_sitemap
      Type: boolean

      resource was found on website’s sitemap if true, the resource was found on the sitemap of the website

    • tasks.result.items.checks.has_redirect
      Type: boolean

      resource has a redirect available for items with the following resource_type: script, image; if the resource_type is image, this field will indicate whether other pages and/or resources have redirects pointing at the image; if the resource_type is script, this field will indicate whether the script contains a redirect

    • tasks.result.items.checks.has_subrequests
      Type: boolean

      resource contains subrequests indicates whether the content of a stylesheet or script contain additional requests; available for items with the following resource_type: stylesheet, script

    • tasks.result.items.checks.high_loading_time
      Type: boolean

      resource with high loading time indicates whether a resource loading time exceeds 3 seconds; available for items with the following resource_type: script, image, stylesheet, broken

    • tasks.result.items.checks.is_4xx_code
      Type: boolean

      resource with with 4xx status code indicates whether a page with this resource has 4XX response code

    • tasks.result.items.checks.is_5xx_code
      Type: boolean

      resource with 5xx status code indicates whethera page with this resource has 5XX response code

    • tasks.result.items.checks.is_broken
      Type: boolean

      broken resource indicates whether a page with this resource returns 4xx, 5xx response codes or has broken elements inside the resource; available for items with the following resource_type: script, image, stylesheet, broken

    • tasks.result.items.checks.is_http
      Type: boolean

      page with the http protocol available for items with the following resource_type: script, image, stylesheet, broken

    • tasks.result.items.checks.is_https
      Type: boolean

      page with the https protocol available for items with the following resource_type: script, image, stylesheet, broken

    • tasks.result.items.checks.is_minified
      Type: boolean

      resource is minified indicates whether the content of a stylesheet or script is minified; available for items with the following resource_type: stylesheet, script

    • tasks.result.items.checks.is_redirect
      Type: boolean

      resource with redirects indicates whether a page with this resource has 3XX redirects to other pages; available for items with the following resource_type: script, image, stylesheet, broken

    • tasks.result.items.checks.is_www
      Type: boolean

      page with www indicates whether a page with this resource is on a www subdomain; available for items with the following resource_type: script, image, stylesheet, broken

    • tasks.result.items.checks.no_content_encoding
      Type: boolean

      resource with no content encoding indicates whether a page has no compression algorithm of the content; available for items with the following resource_type: script, image, stylesheet, broken

    • tasks.result.items.checks.original_size_displayed
      Type: boolean

      image desplayes in its original size indicates whether the image is displayed in its original size; available for items with the following resource_type: image

    • tasks.result.items.encoded_size
      Type: integer

      resource size after encoding indicates the size of the encoded resource measured in bytes

    • tasks.result.items.fetch_time
      Type: string

      date and time when a resource was fetched in the UTC format: “yyyy-mm-dd hh-mm-ss +00:00” example: 2021-02-17 13:54:15 +00:00

    • tasks.result.items.fetch_timing
      Type: object

      resource fething time range

    • tasks.result.items.fetch_timing.duration_time
      Type: integer

      indicates how many milliseconds it took to fetch a resource

    • tasks.result.items.fetch_timing.fetch_end
      Type: integer

      time to complete downloading the resource the amount of time a browser needs to complete downloading a resource

    • tasks.result.items.fetch_timing.fetch_start
      Type: integer

      time to start downloading the resource the amount of time a browser needs to start downloading a resource

    • tasks.result.items.location
      Type: string

      location header indicates the URL to redirect a page to

    • tasks.result.items.meta
      Type: object

      resource properties the value depends on the resource_type note that if you do not indicate a url when setting a task, resource’s meta is returned based on the data from the page where our crawler first saw the resource; to obtain resource’s meta from a particular url, specify that URL when setting a task

    • tasks.result.items.meta.alternative_text
      Type: string

      content of the image alt attribute the value depends on the resource_type

    • tasks.result.items.meta.height
      Type: integer

      image height in px

    • tasks.result.items.meta.original_height
      Type: integer

      original image height in px

    • tasks.result.items.meta.original_width
      Type: integer

      original image width in px

    • tasks.result.items.meta.title
      Type: string

      title

    • tasks.result.items.meta.width
      Type: integer

      image width in px

    • tasks.result.items.resource_type
      Type: string

      type of the returned resource possible types: script, image, stylesheet, broken

    • tasks.result.items.size
      Type: integer

      resource size indicates the size of a given resource measured in bytes

    • tasks.result.items.status_code
      Type: integer

      status code of the page where a given resource is located

    • tasks.result.items.total_transfer_size
      Type: integer

      compressed resource size indicates the compressed size of a given resource in bytes

    • tasks.result.items.url
      Type: string

      resource URL

    • tasks.result.resource_errors
      Type: object

      resource errors and warnings

    • tasks.result.resource_errors.accept_type
      Type: string

      indicates the expected type of resource for example, if "resource_type": "broken", accept_type will indicate the type of the broken resource possible values: any, none, image, sitemap, robots, script, stylesheet, redirect, html, text, other, font

    • tasks.result.resource_errors.content_encoding
      Type: string

      type of encoding

    • tasks.result.resource_errors.errors
      Type: array string[]

      resource errors

    • tasks.result.resource_errors.errors.column
      Type: integer

      column where the error was found

    • tasks.result.resource_errors.errors.line
      Type: integer

      line where the error was found

    • tasks.result.resource_errors.errors.message
      Type: string

      text message of the error the full list of possible HTML errors can be found here

    • tasks.result.resource_errors.errors.status_code
      Type: integer

      status code of the error possible values: 0 — Unidentified Error; 501 — Html Parse Error; 1501 — JS Parse Error; 2501 — CSS Parse Error; 3501 — Image Parse Error; 3502 — Image Scale Is Zero; 3503 — Image Size Is Zero; 3504 — Image Format Invalid

    • tasks.result.resource_errors.last_modified
      Type: object

      contains data on changes related to the resource if there is no data, the value will be null

    • tasks.result.resource_errors.last_modified.header
      Type: string

      date and time when the header was last modified in the UTC format: “yyyy-mm-dd hh-mm-ss +00:00” example: 2019-11-15 12:57:46 +00:00 if there is no data, the value will be null

    • tasks.result.resource_errors.last_modified.meta_tag
      Type: string

      date and time when the meta tag was last modified in the UTC format: “yyyy-mm-dd hh-mm-ss +00:00” example: 2019-11-15 12:57:46 +00:00 if there is no data, the value will be null

    • tasks.result.resource_errors.last_modified.sitemap
      Type: string

      date and time when the sitemap was last modified in the UTC format: “yyyy-mm-dd hh-mm-ss +00:00” example: 2019-11-15 12:57:46 +00:00 if there is no data, the value will be null

    • tasks.result.resource_errors.media_type
      Type: string

      types of media used to display a resource

    • tasks.result.resource_errors.server
      Type: string

      server version

    • tasks.result.resource_errors.warnings
      Type: array string[]

      resource warnings

    • tasks.result.resource_errors.warnings.column
      Type: integer

      column the warning relates to note that if "column": 0, the warning relates to the whole page

    • tasks.result.resource_errors.warnings.line
      Type: integer

      line the warning relates to note that if "line": 0, the warning relates to the whole page

    • tasks.result.resource_errors.warnings.message
      Type: string

      text message of the warning possible messages: "Has node with more than 60 childs." – HTML page has at least 1 tag nesting over 60 tags of the same level "Has more that 1500 nodes." – DOM tree contains over 1,500 elements "HTML depth more than 32 tags." – DOM depth exceeds 32 nodes

    • tasks.result.resource_errors.warnings.status_code
      Type: integer

      status code of the warning possible values: 0 — Unidentified Warning; 1 — Has node with more than 60 childs; 2 — Has more that 1500 nodes; 3 — HTML depth more than 32 tags

    • tasks.result.total_items_count
      Type: integer

      total number of relevant items crawled

    • tasks.status_code
      Type: integer

      status code of the task generated by DataForSEO; can be within the following range: 10000-60000 you can find the full list of the response codes here

    • tasks.status_message
      Type: string

      informational message of the task you can find the full list of general informational messages here

    • tasks.time
      Type: string

      execution time, seconds

    • time
      Type: string

      execution time, seconds

    • version
      Type: string

      the current version of the API

    application/json
  • 400

    Bad request

  • 401

    Unauthorized

  • 402

    The request cannot proceed because a billing requirement is not met.

  • 403

    The account is not permitted to perform this operation.

  • 429

    Rate limit exceeded

  • 500

    Internal server error

  • 502

    The service could not complete the request.

  • 503

    The API or billing service is temporarily unavailable.

  • 504

    The service timed out while processing the request.

  • default

    The operation failed. Keep the response request ID when contacting Felo support.

Request Example for post/v1/beta/dataforseo/on_page/resources
curl https://openapi.felo.ai/v1/beta/dataforseo/on_page/resources \
  --request POST \
  --header 'Content-Type: application/json' \
  --header 'Authorization: Bearer YOUR_SECRET_TOKEN' \
  --data '[
  {
    "id": "",
    "url": "",
    "limit": 1,
    "offset": 1,
    "filters": [],
    "relevant_pages_filters": [],
    "order_by": [
      ""
    ],
    "search_after_token": "",
    "tag": ""
  }
]'
{
  "version": "string",
  "status_code": 1,
  "status_message": "string",
  "time": "string",
  "cost": 1,
  "tasks_count": 1,
  "tasks_error": 1,
  "tasks": [
    "string"
  ],
  "tasks.id": "string",
  "tasks.status_code": 1,
  "tasks.status_message": "string",
  "tasks.time": "string",
  "tasks.cost": 1,
  "tasks.result_count": 1,
  "tasks.path": [
    "string"
  ],
  "tasks.data": {},
  "tasks.result": [
    "string"
  ],
  "tasks.result.crawl_progress": "string",
  "tasks.result.crawl_status": {},
  "tasks.result.crawl_status.max_crawl_pages": 1,
  "tasks.result.crawl_status.pages_in_queue": 1,
  "tasks.result.crawl_status.pages_crawled": 1,
  "tasks.result.total_items_count": 1,
  "tasks.result.items_count": 1,
  "tasks.result.items": [
    "string"
  ],
  "tasks.result.items.resource_type": "string",
  "tasks.result.items.meta": {},
  "tasks.result.items.meta.alternative_text": "string",
  "tasks.result.items.meta.title": "string",
  "tasks.result.items.meta.original_width": 1,
  "tasks.result.items.meta.original_height": 1,
  "tasks.result.items.meta.width": 1,
  "tasks.result.items.meta.height": 1,
  "tasks.result.items.status_code": 1,
  "tasks.result.items.location": "string",
  "tasks.result.items.url": "string",
  "tasks.result.items.size": 1,
  "tasks.result.items.encoded_size": 1,
  "tasks.result.items.total_transfer_size": 1,
  "tasks.result.items.fetch_time": "string",
  "tasks.result.items.fetch_timing": {},
  "tasks.result.items.fetch_timing.duration_time": 1,
  "tasks.result.items.fetch_timing.fetch_start": 1,
  "tasks.result.items.fetch_timing.fetch_end": 1,
  "tasks.result.items.cache_control": {},
  "tasks.result.items.cache_control.cachable": true,
  "tasks.result.items.cache_control.ttl": 1,
  "tasks.result.items.checks": {},
  "tasks.result.items.checks.no_content_encoding": true,
  "tasks.result.items.checks.high_loading_time": true,
  "tasks.result.items.checks.is_redirect": true,
  "tasks.result.items.checks.is_4xx_code": true,
  "tasks.result.items.checks.is_5xx_code": true,
  "tasks.result.items.checks.is_broken": true,
  "tasks.result.items.checks.is_www": true,
  "tasks.result.items.checks.is_https": true,
  "tasks.result.items.checks.is_http": true,
  "tasks.result.items.checks.original_size_displayed": true,
  "tasks.result.items.checks.is_minified": true,
  "tasks.result.items.checks.has_redirect": true,
  "tasks.result.items.checks.has_subrequests": true,
  "tasks.result.items.checks.from_sitemap": true,
  "tasks.result.resource_errors": {},
  "tasks.result.resource_errors.errors": [
    "string"
  ],
  "tasks.result.resource_errors.errors.line": 1,
  "tasks.result.resource_errors.errors.column": 1,
  "tasks.result.resource_errors.errors.message": "string",
  "tasks.result.resource_errors.errors.status_code": 1,
  "tasks.result.resource_errors.warnings": [
    "string"
  ],
  "tasks.result.resource_errors.warnings.line": 1,
  "tasks.result.resource_errors.warnings.column": 1,
  "tasks.result.resource_errors.warnings.message": "string",
  "tasks.result.resource_errors.warnings.status_code": 1,
  "tasks.result.resource_errors.content_encoding": "string",
  "tasks.result.resource_errors.media_type": "string",
  "tasks.result.resource_errors.accept_type": "string",
  "tasks.result.resource_errors.server": "string",
  "tasks.result.resource_errors.last_modified": {},
  "tasks.result.resource_errors.last_modified.header": "string",
  "tasks.result.resource_errors.last_modified.sitemap": "string",
  "tasks.result.resource_errors.last_modified.meta_tag": "string"
}
OnPage API Resources