Zyte API Stats API

Read recorded Zyte API usage — request volume, cost, response times and status codes — filtered and grouped by domain, API key label, response code, requested feature, extraction type and customer-supplied request tags. Authenticated with the Zyte DASHBOARD API key, which is not the Zyte API key, and scoped by a required organization_id parameter.

Operations 2

GET /api/stats Stats
GET /api/v1/stats Stats V1

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/zyte-stats-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

zyte-stats-api-openapi.yaml Raw ↑
components:
  schemas:
    CurrencyValue:
      description: "A monetary amount in a single currency.\n\nUsed by the multicurrency (`/api/v1/stats`) cost fields, where each cost is reported as a list with one `CurrencyValue` entry per currency present in your usage."
      properties:
        currency:
          description: Three-letter [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) currency code (e.g. `USD`, `EUR`, `GBP`).
          maxLength: 3
          minLength: 3
          type: string
        value:
          description: The amount, in micro-units of `currency` (divide by 1,000,000 to get the amount in the currency's main unit).
          minimum: 0
          type: number
      required:
      - currency
      - value
      type: object
    HTTPError:
      properties:
        detail:
          type: object
        message:
          type: string
      type: object
    StatsResponse:
      properties:
        page:
          minimum: 1
          type: integer
        page_size:
          maximum: 500
          minimum: 1
          type: integer
        results:
          items:
            $ref: '#/components/schemas/StatsResult'
          type: array
        total_result_count:
          minimum: 1
          type: integer
      required:
      - page
      - page_size
      - results
      - total_result_count
      type: object
    StatsResponseV1:
      properties:
        page:
          minimum: 1
          type: integer
        page_size:
          maximum: 500
          minimum: 1
          type: integer
        results:
          items:
            $ref: '#/components/schemas/StatsResultV1'
          type: array
        total_result_count:
          minimum: 0
          type: integer
      required:
      - page
      - page_size
      - results
      - total_result_count
      type: object
    StatsResult:
      properties:
        billed_traffic_bytes:
          description: "Total billed traffic in bytes over the selected timeframe (and per domain when `groupby_domain=true`).\n\nIt is non-zero only for requests that trigger per-GB billing, such as those using\n[`ipType:residential`](/zyte-api/usage/reference.md) or extended geolocations; it is `0` otherwise."
          minimum: 0
          type: integer
        cost_microusd_avg:
          minimum: 0
          type: number
        cost_microusd_p80:
          minimum: 0
          type: number
        cost_microusd_total:
          minimum: 0
          type: number
        day:
          format: date-time
          type: string
        domain:
          maxLength: 256
          minLength: 0
          type: string
        domain_health:
          description: "Domain health information. Returned only when `include_domain_health=true` and `groupby_domain=true`.\n\nIt aims to show detailed stats from your Top 100 most requested domains in the last 7 days. Domains not recently used or not within the Top 100 domains will have a `null` value. These stats are not real-time; they are calculated once every 3 hours."
          nullable: true
          type: object
          properties:
            global_avg_success_rate_24h:
              type: string
            global_avg_success_rate_7d:
              type: string
            my_avg_price_microusd_24h:
              type: string
            my_avg_price_microusd_7d:
              type: string
            my_avg_response_time_24h:
              type: string
            my_avg_response_time_7d:
              type: string
            my_requests_24h:
              type: integer
            my_requests_7d:
              type: integer
            my_success_rate_24h:
              type: string
            my_success_rate_7d:
              type: string
            status:
              type: string
              enum:
              - healthy
              - possible_misconfiguration
              - issue_under_investigation
              - possible_performance_issue
            total_spent_microusd_24h:
              type: string
            total_spent_microusd_7d:
              type: string
            total_successful_requests_24h:
              type: integer
            total_successful_requests_7d:
              type: integer
        hour:
          format: date-time
          type: string
        month:
          format: date-time
          type: string
        organization_id:
          type: integer
        request_count:
          minimum: 1
          type: integer
        response_time_sec_avg:
          minimum: 0
          type: number
        response_time_sec_p80:
          minimum: 0
          type: number
        status_codes:
          items:
            properties:
              code:
                nullable: true
                type: integer
              count:
                minimum: 0
                type: integer
            type: object
          type: array
        year:
          format: date-time
          type: string
      required:
      - billed_traffic_bytes
      - cost_microusd_avg
      - cost_microusd_p80
      - cost_microusd_total
      - organization_id
      - request_count
      - response_time_sec_avg
      - response_time_sec_p80
      type: object
    StatsResultV1:
      properties:
        billed_traffic_bytes:
          description: "Total billed traffic in bytes over the selected timeframe (and per domain when `groupby_domain=true`). It is a plain integer total, not broken down by currency.\n\nIt is non-zero only for requests that trigger per-GB billing, such as those using\n[`ipType:residential`](/zyte-api/usage/reference.md) or extended geolocations; it is `0` otherwise."
          minimum: 0
          type: integer
        cost_micro_avg:
          description: Average cost per request, with one entry per currency.
          items:
            $ref: '#/components/schemas/CurrencyValue'
          type: array
        cost_micro_p80:
          description: 80th percentile cost per request, with one entry per currency.
          items:
            $ref: '#/components/schemas/CurrencyValue'
          type: array
        cost_micro_total:
          description: Total cost, with one entry per currency.
          items:
            $ref: '#/components/schemas/CurrencyValue'
          type: array
        day:
          format: date-time
          type: string
        domain:
          maxLength: 256
          minLength: 0
          type: string
        domain_health:
          description: "Domain health information. Returned only when `include_domain_health=true` and `groupby_domain=true`.\n\nIt aims to show detailed stats from your Top 100 most requested domains in the last 7 days. Domains not recently used or not within the Top 100 domains will have a `null` value. These stats are not real-time; they are calculated once every 3 hours.\n\nMonetary fields (`total_spent_micro_*`, `my_avg_price_micro_*`) are reported as currency arrays, with one entry per currency."
          nullable: true
          type: object
          properties:
            global_avg_success_rate_24h:
              type: string
            global_avg_success_rate_7d:
              type: string
            my_avg_price_micro_24h:
              description: Average price per request in the last 24 hours, with one entry per currency.
              items:
                $ref: '#/components/schemas/CurrencyValue'
              type: array
            my_avg_price_micro_7d:
              description: Average price per request in the last 7 days, with one entry per currency.
              items:
                $ref: '#/components/schemas/CurrencyValue'
              type: array
            my_avg_response_time_24h:
              type: string
            my_avg_response_time_7d:
              type: string
            my_requests_24h:
              type: integer
            my_requests_7d:
              type: integer
            my_success_rate_24h:
              type: string
            my_success_rate_7d:
              type: string
            status:
              type: string
              enum:
              - healthy
              - possible_misconfiguration
              - issue_under_investigation
              - possible_performance_issue
            total_spent_micro_24h:
              description: Total amount spent in the last 24 hours, with one entry per currency.
              items:
                $ref: '#/components/schemas/CurrencyValue'
              type: array
            total_spent_micro_7d:
              description: Total amount spent in the last 7 days, with one entry per currency.
              items:
                $ref: '#/components/schemas/CurrencyValue'
              type: array
            total_successful_requests_24h:
              type: integer
            total_successful_requests_7d:
              type: integer
        hour:
          format: date-time
          type: string
        month:
          format: date-time
          type: string
        organization_id:
          type: integer
        request_count:
          minimum: 1
          type: integer
        response_time_sec_avg:
          minimum: 0
          type: number
        response_time_sec_p80:
          minimum: 0
          type: number
        status_codes:
          items:
            properties:
              code:
                nullable: true
                type: integer
              count:
                minimum: 0
                type: integer
            type: object
          type: array
        year:
          format: date-time
          type: string
      required:
      - billed_traffic_bytes
      - organization_id
      - request_count
      - response_time_sec_avg
      - response_time_sec_p80
      type: object
    ValidationError:
      properties:
        detail:
          properties:
            <location>:
              properties:
                <field_name>:
                  items:
                    type: string
                  type: array
              type: object
          type: object
        message:
          type: string
      type: object
  securitySchemes:
    BasicAuth:
      scheme: basic
      type: http
info:
  title: APIFlask
  version: 0.1.0
openapi: 3.0.3
paths:
  /api/stats:
    get:
      parameters:
      - in: query
        name: organization_id
        required: true
        schema:
          type: integer
      - in: query
        name: page
        required: false
        schema:
          default: 1
          minimum: 1
          type: integer
      - in: query
        name: page_size
        required: false
        schema:
          default: 500
          maximum: 500
          minimum: 1
          type: integer
      - description: "The start date and time in\n[ISO 8601-1](https://en.wikipedia.org/wiki/ISO_8601) format (e.g. `2024-09-10T00:00:00Z`).\n\nIt defaults to 7 days in the past."
        in: query
        name: start_time
        required: false
        schema:
          format: date-time
          type: string
      - description: "The end date and time in\n[ISO 8601-1](https://en.wikipedia.org/wiki/ISO_8601) format (e.g. `2024-09-17T00:00:00Z`).\n\nIt defaults to the current date and time."
        in: query
        name: end_time
        required: false
        schema:
          format: date-time
          type: string
      - in: query
        name: domains
        required: false
        schema:
          maxLength: 64
          minLength: 0
          type: string
      - in: query
        name: apikey_labels
        required: false
        schema:
          maxLength: 64
          minLength: 0
          type: string
      - in: query
        name: response_codes
        required: false
        schema:
          maxLength: 64
          minLength: 0
          type: string
      - in: query
        name: requested_features
        required: false
        schema:
          enum:
          - actions
          - browserHtml
          - fileDownload
          - httpResponseBody
          - networkCapture
          - screenshot
          - sessionContext
          - extendedGeolocation
      - in: query
        name: extraction_type
        required: false
        schema:
          enum:
          - article
          - articleList
          - articleNavigation
          - forumThread
          - jobPosting
          - jobPostingNavigation
          - pageContent
          - product
          - productList
          - productNavigation
          - serp
      - in: query
        name: extraction_from
        required: false
        schema:
          enum:
          - httpResponseBody
          - browserHtml
      - description: "Filter requests by\n[tags](/zyte-api/usage/reference.md).\n \nIt must be a comma-separated list of values, where each value can be:\n \n- A key-value pair separated by a colon, i.e. ``<tag>:<value>``, to include only\nrequests where the specified tag has the specified value.\n- A tag, to include only requests where the specified tag exists.\n\nOnly requests that match *all* the specified tag filters will be\nincluded in the results."
        in: query
        name: tags
        required: false
        schema:
          maxLength: 64
          minLength: 0
          type: string
      - in: query
        name: groupby_time
        required: false
        schema:
          default:
          enum:
          - hour
          - day
          - month
          - year
          - 
          nullable: true
          type: string
      - description: "Group results by domain.\n\nWhen set to `true`, the response will include a `domain` field for each result."
        in: query
        name: groupby_domain
        required: false
        schema:
          default: false
          type: boolean
      - description: "Include domain health information in the response.\n\nRequires `groupby_domain=true`. If `include_domain_health=true` is specified without `groupby_domain=true`, a validation error will be returned."
        in: query
        name: include_domain_health
        required: false
        schema:
          default: false
          type: boolean
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatsResponse'
          description: Successful response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPError'
          description: Authentication error
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationError'
          description: Validation error
      security:
      - BasicAuth: []
      summary: Stats
  /api/v1/stats:
    get:
      description: "Same as [Stats](#operation/stats), but with multicurrency support.\n \nCost fields are returned as arrays with one entry per currency present in your usage (`cost_micro_total`, `cost_micro_avg`, `cost_micro_p80`), and an additional `billed_traffic_bytes` field is included.\n\nUse this endpoint if your organization is billed in a currency other than USD; the [Stats](#operation/stats) endpoint reports costs in USD only and rejects non-USD organizations."
      parameters:
      - in: query
        name: organization_id
        required: true
        schema:
          type: integer
      - in: query
        name: page
        required: false
        schema:
          default: 1
          minimum: 1
          type: integer
      - in: query
        name: page_size
        required: false
        schema:
          default: 500
          maximum: 500
          minimum: 1
          type: integer
      - description: "The start date and time in\n[ISO 8601-1](https://en.wikipedia.org/wiki/ISO_8601) format (e.g. `2024-09-10T00:00:00Z`).\n\nIt defaults to 7 days in the past."
        in: query
        name: start_time
        required: false
        schema:
          format: date-time
          type: string
      - description: "The end date and time in\n[ISO 8601-1](https://en.wikipedia.org/wiki/ISO_8601) format (e.g. `2024-09-17T00:00:00Z`).\n\nIt defaults to the current date and time."
        in: query
        name: end_time
        required: false
        schema:
          format: date-time
          type: string
      - in: query
        name: domains
        required: false
        schema:
          maxLength: 64
          minLength: 0
          type: string
      - in: query
        name: apikey_labels
        required: false
        schema:
          maxLength: 64
          minLength: 0
          type: string
      - in: query
        name: response_codes
        required: false
        schema:
          maxLength: 64
          minLength: 0
          type: string
      - in: query
        name: requested_features
        required: false
        schema:
          enum:
          - actions
          - browserHtml
          - fileDownload
          - httpResponseBody
          - networkCapture
          - screenshot
          - sessionContext
          - extendedGeolocation
      - in: query
        name: extraction_type
        required: false
        schema:
          enum:
          - article
          - articleList
          - articleNavigation
          - forumThread
          - jobPosting
          - jobPostingNavigation
          - pageContent
          - product
          - productList
          - productNavigation
          - serp
      - in: query
        name: extraction_from
        required: false
        schema:
          enum:
          - httpResponseBody
          - browserHtml
      - description: "Filter requests by\n[tags](/zyte-api/usage/reference.md).\n \nIt must be a comma-separated list of values, where each value can be:\n \n- A key-value pair separated by a colon, i.e. ``<tag>:<value>``, to include only\nrequests where the specified tag has the specified value.\n- A tag, to include only requests where the specified tag exists.\n\nOnly requests that match *all* the specified tag filters will be\nincluded in the results."
        in: query
        name: tags
        required: false
        schema:
          maxLength: 64
          minLength: 0
          type: string
      - in: query
        name: groupby_time
        required: false
        schema:
          default:
          enum:
          - hour
          - day
          - month
          - year
          - 
          nullable: true
          type: string
      - description: "Group results by domain.\n\nWhen set to `true`, the response will include a `domain` field for each result."
        in: query
        name: groupby_domain
        required: false
        schema:
          default: false
          type: boolean
      - description: "Include domain health information in the response.\n\nRequires `groupby_domain=true`. If `include_domain_health=true` is specified without `groupby_domain=true`, a validation error will be returned."
        in: query
        name: include_domain_health
        required: false
        schema:
          default: false
          type: boolean
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatsResponseV1'
          description: Successful response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPError'
          description: Authentication error
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationError'
          description: Validation error
      security:
      - BasicAuth: []
      summary: Stats V1
servers:
- name: Production Server
  url: https://zyte-api-stats.zyte.com