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

# Online Search API

> Search the public web and return normalized organic results for agent context, market research, and enrichment workflows.

<Note>
  **Beta.** This endpoint is designed for low-volume context enrichment. Results are best-effort, cached, and may be partial when upstream search engines throttle or fail.
</Note>

## Endpoint

```http theme={null}
GET /v2/search/online
```

Search the public web and return normalized organic results. Responses are cached to keep the endpoint lightweight.

```bash theme={null}
curl "https://api.polynode.dev/v2/search/online?q=Cavaliers%20Knicks%20injury%20news&max_results=5" \
  -H "x-api-key: YOUR_KEY"
```

## Query parameters

| Parameter           | Description                                                                                                |
| ------------------- | ---------------------------------------------------------------------------------------------------------- |
| `q`                 | Search query. Required.                                                                                    |
| `max_results`       | Number of normalized organic results. Defaults to `10`, capped at `20`.                                    |
| `engines`           | Comma-separated engine adapters. Defaults to `bing,duckduckgo`. `brave` is available as an opt-in adapter. |
| `language`          | Search language. Defaults to `en-US`.                                                                      |
| `time_range`        | Optional freshness filter when supported: `day`, `week`, `month`, `year`.                                  |
| `safe_search`       | Safe-search mode: `0`, `1`, or `2`. Defaults to `0`.                                                       |
| `cache_ttl_seconds` | Cache TTL for this query. Defaults to `600`, capped at `3600`.                                             |

Rate limit: `3` requests per `10` seconds per API key, in addition to your normal tier limit.

## Response

```json theme={null}
{
  "query": "Cavaliers Knicks injury news",
  "source": "search_online",
  "adapter": "searxng",
  "status": "ok",
  "cached": false,
  "engines_requested": ["bing", "duckduckgo"],
  "unresponsive_engines": [],
  "result_count": 2,
  "results": [
    {
      "title": "Cleveland Cavaliers Injury Status - ESPN",
      "url": "https://www.espn.com/nba/team/injuries/_/name/cle/cleveland-cavaliers",
      "domain": "espn.com",
      "snippet": "Visit ESPN for the current injury situation...",
      "engines": ["duckduckgo"],
      "score": 1,
      "category": "general",
      "published_at": null
    }
  ],
  "answers": [],
  "suggestions": [],
  "fetched_at": "2026-05-25T11:10:00.000Z",
  "elapsed_ms": 1200
}
```

`status` may be `partial` when one engine fails but other engines still return results.


## OpenAPI

````yaml GET /v2/search/online
openapi: 3.1.0
info:
  title: PolyNode API
  description: >-
    Real-time Polymarket data API with decoded mempool settlements, OHLCV
    candles, and full Polygon JSON-RPC proxy.
  contact:
    name: PolyNode
    url: https://polynode.dev
  license:
    name: ''
  version: 2.0.0
servers:
  - url: https://api.polynode.dev
    description: Production
security:
  - api_key: []
paths:
  /v2/search/online:
    get:
      tags:
        - Search & Context
      summary: Online Search
      description: >-
        Search the public web and return normalized organic results. Intended
        for low-volume agent context, research, and enrichment workflows.
      operationId: search_online
      parameters:
        - name: q
          in: query
          required: true
          description: Search query.
          schema:
            type: string
        - name: max_results
          in: query
          description: Number of normalized organic results. Defaults to 10, capped at 20.
          schema:
            type: integer
            default: 10
            minimum: 1
            maximum: 20
        - name: engines
          in: query
          description: >-
            Comma-separated engine adapters. Defaults to bing,duckduckgo. brave
            is available as an opt-in adapter.
          schema:
            type: string
            default: bing,duckduckgo
        - name: language
          in: query
          description: Search language.
          schema:
            type: string
            default: en-US
        - name: time_range
          in: query
          description: Optional freshness filter when supported.
          schema:
            type: string
            enum:
              - day
              - week
              - month
              - year
        - name: safe_search
          in: query
          description: Safe-search mode.
          schema:
            type: integer
            default: 0
            enum:
              - 0
              - 1
              - 2
        - name: cache_ttl_seconds
          in: query
          description: Cache TTL for the query. Defaults to 600, capped at 3600.
          schema:
            type: integer
            default: 600
            minimum: 1
            maximum: 3600
      responses:
        '200':
          description: Online search results
        '400':
          description: Invalid query
        '429':
          description: Search online rate limited
        '502':
          description: Search adapter unavailable
      security:
        - api_key: []
components:
  securitySchemes:
    api_key:
      type: apiKey
      in: header
      name: x-api-key

````