> ## Documentation Index
> Fetch the complete documentation index at: https://vpn-docs.wxapros.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Coverage report

> How many of your own lookups returned a category label over the last 30 days.

> [!NOTE]
>
> `matched` counts every lookup that returned a classification other than
> `unknown` or `suspected_vpn`, `hosting` and `cdn` included, so `coverage_pct`
> is the share of your lookups that got a category label. It is not a detection
> rate. The fractions run from 0 to 1: `0.5` means 50%.


## OpenAPI

````yaml GET /api/v1/coverage/report
openapi: 3.1.0
info:
  title: VPN & Proxy Detection API
  description: >-
    Lookup and bulk IP intelligence for VPN, proxy, Tor, relay, hosting, CDN,
    and residential proxy detection.


    **Authentication:** every endpoint in this reference requires your API key.
    https://vpn-docs.wxapros.com/authentication describes how to pass it.


    **Tiers:** Intro, Starter, Pro, Scale, Business, Enterprise. Pro+ adds
    residential proxy attribution, confidence/freshness, and CSV export.
    Business+ adds MMDB and Parquet bulk downloads. Enterprise adds NetFlow
    protocol attribution.
  contact:
    name: WXA VPN Support
    url: https://www.whoisxmlapi.com/
    email: service.desk@whoisxmlapi.com
  version: 1.0.0
servers:
  - url: https://vpn-proxy-detection.whoisxmlapi.com
    description: The public API. Every path in this reference starts with /api/v1.
security:
  - apiKey: []
paths:
  /api/v1/coverage/report:
    get:
      summary: Coverage report
      description: >-
        How many of the lookups made with your API key in the last 30 days
        returned a classification. Single and batch lookups both count, one for
        each IP looked up, and a later lookup of the same IP counts again.
        Lookups that failed with an error are not counted.


        `matched` counts the lookups that returned a classification other than
        `unknown` or `suspected_vpn`, hosting and CDN included, so
        `coverage_pct` is the share of your lookups that got a category label.
        It is not a detection rate: an `unknown` or `suspected_vpn` result
        counts as not matched, and a `hosting` or `cdn` result counts as
        matched.


        Available to Pro+ tiers.
      operationId: coverage_report_api_v1_coverage_report_get
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: object
                title: CoverageReport
                properties:
                  customer_ref:
                    type: string
                    description: >-
                      An opaque identifier for the API key this report covers.
                      It does not change between calls.
                  window_days:
                    type: integer
                    const: 30
                    description: 'Always 30: the report covers the trailing 30 days.'
                  queried:
                    type: integer
                    minimum: 0
                    description: >-
                      Lookups made with your API key in the last 30 days. The
                      count is approximate: a lookup can occasionally go
                      unrecorded. 0 can also mean the report could not be read
                      this time; call again later.
                  matched:
                    type: integer
                    minimum: 0
                    description: >-
                      Of those, the lookups that returned a classification other
                      than `unknown` or `suspected_vpn`, hosting and CDN
                      included.
                  coverage_pct:
                    type:
                      - number
                      - 'null'
                    minimum: 0
                    maximum: 1
                    description: >-
                      `matched` divided by `queried`, as a fraction from 0 to 1
                      (0.5 means 50%), to 4 decimal places. Null when `queried`
                      is 0.
                  wow_trend:
                    type: object
                    description: >-
                      The same fraction for the last 7 days and for the 7 days
                      before them.
                    properties:
                      this_7d_coverage_pct:
                        type:
                          - number
                          - 'null'
                        minimum: 0
                        maximum: 1
                        description: >-
                          The fraction of the last 7 days' lookups that were
                          matched. Null when there were none.
                      prior_7d_coverage_pct:
                        type:
                          - number
                          - 'null'
                        minimum: 0
                        maximum: 1
                        description: >-
                          The fraction of the previous 7 days' lookups (8 to 14
                          days ago) that were matched. Null when there were
                          none.
                      delta:
                        type:
                          - number
                          - 'null'
                        minimum: -1
                        maximum: 1
                        description: >-
                          `this_7d_coverage_pct` minus `prior_7d_coverage_pct`,
                          to 4 decimal places. Null when either is null.
                      this_7d_queried:
                        type: integer
                        minimum: 0
                        description: Lookups in the last 7 days.
                      prior_7d_queried:
                        type: integer
                        minimum: 0
                        description: Lookups in the 7 days before them.
                  residential_proxy:
                    type: object
                    properties:
                      hits:
                        type: integer
                        minimum: 0
                        description: >-
                          Lookups in the last 30 days that returned a
                          residential-proxy classification.
                      share_of_queried_pct:
                        type:
                          - number
                          - 'null'
                        minimum: 0
                        maximum: 1
                        description: >-
                          `hits` divided by `queried`, as a fraction from 0 to
                          1. Null when `queried` is 0. It describes your
                          traffic, not how much residential-proxy traffic we
                          detect.
        '401':
          description: Missing API key
        '403':
          description: Invalid API key, inactive subscription, or a plan below Pro
components:
  securitySchemes:
    apiKey:
      type: apiKey
      in: query
      name: apiKey
      description: >-
        Your API key, passed as the apiKey query parameter on every request. A
        key sent in a header (Authorization or X-API-Key) is not accepted and
        gets 401.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.