Surf Web API

Fetch and search web content. Retrieve any URL and convert it to clean, LLM-friendly markdown, or search the internet for crypto-related articles, reports, and resources.

Operations 1

GET /gateway/v1/web/fetch Web Page Fetch #

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/surf-web-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

surf-web-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  contact:
    email: backend@cybertinolab.com
    name: Cyber team
  description: Surf data API gateway providing typed endpoints for crypto market data, project analytics, social signals, on-chain queries, and more.
  title: Hermod Web API
  version: sha-80d3407
servers:
- url: /
tags:
- description: Fetch and search web content. Retrieve any URL and convert it to clean, LLM-friendly markdown, or search the internet for crypto-related articles, reports, and resources.
  name: Web
paths:
  /gateway/v1/web/fetch:
    get:
      description: 'Fetches a web page and converts it to clean, LLM-friendly markdown.


        **Options:**

        - `target_selector` — extract specific page sections

        - `remove_selector` — strip unwanted elements


        Returns 400 if the URL is invalid or unreachable.'
      operationId: web-fetch
      parameters:
      - description: URL to fetch and parse
        explode: false
        in: query
        name: url
        required: true
        schema:
          description: URL to fetch and parse
          examples:
          - https://ethereum.org
          type: string
      - description: CSS selector to extract specific content
        explode: false
        in: query
        name: target_selector
        schema:
          description: CSS selector to extract specific content
          examples:
          - article.main-content
          type: string
      - description: CSS selector to remove unwanted elements
        explode: false
        in: query
        name: remove_selector
        schema:
          description: CSS selector to remove unwanted elements
          examples:
          - nav,footer,.ads
          type: string
      - description: CSS selector to wait for before extracting
        explode: false
        in: query
        name: wait_for_selector
        schema:
          description: CSS selector to wait for before extracting
          examples:
          - .content-loaded
          type: string
      - description: Request timeout in milliseconds
        explode: false
        in: query
        name: timeout
        schema:
          default: 30000
          description: Request timeout in milliseconds
          examples:
          - 5000
          format: int64
          maximum: 60000
          minimum: 1000
          type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DataObjectResponseWebFetchResultItem'
          description: OK
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DataAPIError'
          description: Error
      security:
      - AccessToken: []
      summary: Web Page Fetch
      tags:
      - Web
components:
  schemas:
    DataObjectResponseWebFetchResultItem:
      additionalProperties: false
      properties:
        $schema:
          description: A URL to the JSON Schema for this object.
          examples:
          - https://example.com/schemas/DataObjectResponseWebFetchResultItem.json
          format: uri
          readOnly: true
          type: string
        data:
          $ref: '#/components/schemas/WebFetchResultItem'
        meta:
          $ref: '#/components/schemas/ObjectResponseMeta'
      required:
      - data
      - meta
      type: object
    ObjectResponseMeta:
      additionalProperties: false
      properties:
        cached:
          description: Whether this response was served from cache
          type: boolean
        credits_used:
          description: Credits deducted for this request
          format: int64
          type: integer
        empty_reason:
          description: Hint explaining why the data array is empty, when applicable
          type: string
      required:
      - credits_used
      - cached
      type: object
    DataAPIError:
      additionalProperties: false
      properties:
        $schema:
          description: A URL to the JSON Schema for this object.
          examples:
          - https://example.com/schemas/DataAPIError.json
          format: uri
          readOnly: true
          type: string
        error:
          $ref: '#/components/schemas/DataAPIErrorDetail'
      required:
      - error
      type: object
    DataAPIErrorDetail:
      additionalProperties: false
      properties:
        code:
          type: string
        message:
          type: string
      required:
      - code
      - message
      type: object
    WebFetchResultItem:
      additionalProperties: false
      properties:
        content:
          description: Full page content converted to clean markdown text
          type: string
        title:
          description: Page title extracted from the HTML
          type: string
        url:
          description: The URL that was fetched
          type: string
      required:
      - url
      - content
      type: object
  securitySchemes:
    AccessToken:
      bearerFormat: JWT
      scheme: bearer
      type: http
    AdminToken:
      in: header
      name: X-Admin-Token
      type: apiKey
    InternalKey:
      in: header
      name: X-Internal-Key
      type: apiKey