OpenSERP Stats API

Runtime statistics endpoints

Operations 4

GET /stats Combined cache, proxy, and circuit-breaker stats #
GET /stats/cache Cache statistics only #
GET /stats/proxy Proxy pool and per-engine proxy policy statistics #
GET /stats/cb Circuit breaker state per engine #

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/openserp-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 email required.

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

OpenAPI Specification

openserp-stats-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: OpenSERP Stats API
  version: 2.2.0
  description: 'OpenSERP provides dedicated and multi-engine search endpoints for Google, Yandex, Baidu, Bing, and DuckDuckGo. Search responses are wrapped in a v2 envelope with query echo, metadata, normalized results, and pagination. Invalid client input returns 400 with a machine-readable `reason` code.

    '
  license:
    name: MIT
    url: https://opensource.org/licenses/MIT
servers:
- url: http://127.0.0.1:7000
  description: Local default server
security: []
tags:
- name: Stats
  description: Runtime statistics endpoints
paths:
  /stats:
    get:
      tags:
      - Stats
      operationId: getStats
      summary: Combined cache, proxy, and circuit-breaker stats
      responses:
        '200':
          description: Runtime statistics
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatsResponse'
  /stats/cache:
    get:
      tags:
      - Stats
      operationId: getCacheStats
      summary: Cache statistics only
      responses:
        '200':
          description: Cache status
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CacheStats'
  /stats/proxy:
    get:
      tags:
      - Stats
      operationId: getProxyStats
      summary: Proxy pool and per-engine proxy policy statistics
      responses:
        '200':
          description: Proxy stats
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProxyStats'
  /stats/cb:
    get:
      tags:
      - Stats
      operationId: getCircuitBreakerStats
      summary: Circuit breaker state per engine
      responses:
        '200':
          description: Circuit breaker stats
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CircuitBreakerStatsResponse'
components:
  schemas:
    LaneStats:
      type: object
      required:
      - active
      - evicted_lru
      - cookies_dropped
      description: Sticky proxy lane state observed by this worker.
      properties:
        active:
          type: integer
          description: Number of lanes currently held by the worker.
          example: 12
        evicted_lru:
          type: integer
          description: Lanes evicted by the LRU bound since worker start.
          example: 7
        cookies_dropped:
          type: integer
          description: Lane cookie drops triggered by captcha/challenge responses.
          example: 20
    CircuitBreakerStatsResponse:
      type: object
      required:
      - circuit_breakers
      properties:
        circuit_breakers:
          type: array
          items:
            $ref: '#/components/schemas/CircuitBreakerStat'
    CacheStatsDisabled:
      type: object
      required:
      - status
      properties:
        status:
          type: boolean
          enum:
          - false
    ProxyStats:
      type: object
      required:
      - configured_count
      - healthy_count
      - unhealthy_count
      - request_proxy_url_enabled
      - lanes
      - browser_processes
      - tags
      - entries
      properties:
        configured_count:
          type: integer
        healthy_count:
          type: integer
        unhealthy_count:
          type: integer
        request_proxy_url_enabled:
          type: boolean
          description: Whether `proxies.allow_request_proxy_url` is enabled on this worker.
        lanes:
          $ref: '#/components/schemas/LaneStats'
        browser_processes:
          $ref: '#/components/schemas/BrowserPoolStats'
        tags:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/ProxyTagSummary'
        entries:
          type: array
          items:
            $ref: '#/components/schemas/ProxyStatsEntry'
        engines:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/ProxyEngineStats'
    ProxyEngineStats:
      type: object
      required:
      - selected_proxy
      properties:
        tag:
          type: string
        selected_proxy:
          type: string
    ProxyTagSummary:
      type: object
      required:
      - configured
      - healthy
      properties:
        configured:
          type: integer
        healthy:
          type: integer
    StatsResponse:
      type: object
      required:
      - cache
      - proxy
      - circuit_breakers
      properties:
        cache:
          $ref: '#/components/schemas/CacheStats'
        proxy:
          $ref: '#/components/schemas/ProxyStats'
        circuit_breakers:
          type: array
          items:
            $ref: '#/components/schemas/CircuitBreakerStat'
    CacheStatsEnabled:
      type: object
      required:
      - status
      - entries
      - hits
      - misses
      - bypasses
      - evictions
      - ttl_seconds
      - max_size
      properties:
        status:
          type: boolean
          enum:
          - true
        entries:
          type: integer
        hits:
          type: integer
        misses:
          type: integer
        bypasses:
          type: integer
        evictions:
          type: integer
        ttl_seconds:
          type: integer
        max_size:
          type: integer
    CacheStats:
      oneOf:
      - $ref: '#/components/schemas/CacheStatsEnabled'
      - $ref: '#/components/schemas/CacheStatsDisabled'
    CircuitBreakerStat:
      type: object
      required:
      - engine
      - state
      - failure_count
      - last_changed
      properties:
        engine:
          type: string
        state:
          type: string
          enum:
          - closed
          - open
          - half-open
        failure_count:
          type: integer
        last_changed:
          type: string
          format: date-time
        retry_in:
          type: integer
          description: Seconds until next half-open attempt (present when state is open).
        avg_response_ms:
          type: integer
          description: Average successful engine response time in milliseconds.
    ProxyStatsEntry:
      type: object
      required:
      - proxy
      - tags
      - healthy
      - failures
      - disabled
      properties:
        proxy:
          type: string
        tags:
          type: array
          items:
            type: string
        healthy:
          type: boolean
        failures:
          type: integer
        disabled:
          type: boolean
    BrowserPoolStats:
      type: object
      required:
      - active
      - max
      - evicted_lru
      - evicted_idle
      description: 'Live state of the per-process Chrome pool. Each authenticated upstream proxy identity (scheme+host+port+username) gets a dedicated Chrome so Chrome can answer 407 challenges natively. Direct and unauthenticated proxies share one Chrome with per-BrowserContext proxy override.

        '
      properties:
        active:
          type: integer
          description: Number of Chrome processes currently held by the pool.
          example: 3
        max:
          type: integer
          description: Configured `app.max_processes` LRU cap.
          example: 4
        evicted_lru:
          type: integer
          description: Chrome processes closed because the LRU cap was exceeded.
          example: 12
        evicted_idle:
          type: integer
          description: Chrome processes closed by the idle sweeper after `app.idle_ttl`.
          example: 5