SerpApi · Capability

SerpApi Search API — Search

SerpApi Search API — Search. 2 operations. Lead operation: Run a search across a supported engine. Self-contained Naftiko capability covering one Serpapi business surface.

Run with Naftiko SerpapiSearch

What You Can Do

GET
Runsearch — Run a search across a supported engine
/v1/search
GET
Getsearch — Retrieve a previously submitted asynchronous search
/v1/searches/{search-id}

MCP Tools

run-search-across-supported-engine

Run a search across a supported engine

read-only idempotent
retrieve-previously-submitted-asynchronous-search

Retrieve a previously submitted asynchronous search

read-only idempotent

Capability Spec

serpapi-search.yaml Raw ↑
naftiko: 1.0.0-alpha2
info:
  label: SerpApi Search API — Search
  description: 'SerpApi Search API — Search. 2 operations. Lead operation: Run a search across a supported engine. Self-contained
    Naftiko capability covering one Serpapi business surface.'
  tags:
  - Serpapi
  - Search
  created: '2026-05-19'
  modified: '2026-05-19'
binds:
- namespace: env
  keys:
    SERPAPI_API_KEY: SERPAPI_API_KEY
capability:
  consumes:
  - type: http
    namespace: serpapi-search
    baseUri: https://serpapi.com
    description: SerpApi Search API — Search business capability. Self-contained, no shared references.
    resources:
    - name: search
      path: /search
      operations:
      - name: runsearch
        method: GET
        description: Run a search across a supported engine
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: engine
          in: query
          type: string
          description: Search engine identifier (e.g. google, bing, youtube).
          required: true
        - name: q
          in: query
          type: string
          description: Search query (used by most engines except YouTube).
        - name: search_query
          in: query
          type: string
          description: Search query used by the YouTube engine.
        - name: api_key
          in: query
          type: string
          description: SerpApi private key (may also be supplied via the apiKey security scheme).
        - name: location
          in: query
          type: string
          description: Geographic origin for the search.
        - name: gl
          in: query
          type: string
          description: Two-letter country code.
        - name: hl
          in: query
          type: string
          description: Two-letter language code.
        - name: device
          in: query
          type: string
          description: Device type to emulate.
        - name: no_cache
          in: query
          type: boolean
          description: Force fresh (uncached) results.
        - name: async
          in: query
          type: boolean
          description: Submit asynchronously and retrieve results later.
        - name: output
          in: query
          type: string
          description: Response format.
    - name: searches-search_id
      path: /searches/{search_id}
      operations:
      - name: getsearch
        method: GET
        description: Retrieve a previously submitted asynchronous search
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: search_id
          in: path
          type: string
          description: Identifier of the asynchronous search.
          required: true
    authentication:
      type: apikey
      key: api_key
      value: '{{env.SERPAPI_API_KEY}}'
      placement: query
  exposes:
  - type: rest
    namespace: serpapi-search-rest
    port: 8080
    description: REST adapter for SerpApi Search API — Search. One Spectral-compliant resource per consumed operation, prefixed
      with /v1.
    resources:
    - path: /v1/search
      name: search
      description: REST surface for search.
      operations:
      - method: GET
        name: runsearch
        description: Run a search across a supported engine
        call: serpapi-search.runsearch
        with:
          engine: rest.engine
          q: rest.q
          search_query: rest.search_query
          api_key: rest.api_key
          location: rest.location
          gl: rest.gl
          hl: rest.hl
          device: rest.device
          no_cache: rest.no_cache
          async: rest.async
          output: rest.output
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/searches/{search-id}
      name: searches-search-id
      description: REST surface for searches-search_id.
      operations:
      - method: GET
        name: getsearch
        description: Retrieve a previously submitted asynchronous search
        call: serpapi-search.getsearch
        with:
          search_id: rest.search_id
        outputParameters:
        - type: object
          mapping: $.
  - type: mcp
    namespace: serpapi-search-mcp
    port: 9090
    transport: http
    description: MCP adapter for SerpApi Search API — Search. One tool per consumed operation, routed inline through this
      capability's consumes block.
    tools:
    - name: run-search-across-supported-engine
      description: Run a search across a supported engine
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: serpapi-search.runsearch
      with:
        engine: tools.engine
        q: tools.q
        search_query: tools.search_query
        api_key: tools.api_key
        location: tools.location
        gl: tools.gl
        hl: tools.hl
        device: tools.device
        no_cache: tools.no_cache
        async: tools.async
        output: tools.output
      outputParameters:
      - type: object
        mapping: $.
    - name: retrieve-previously-submitted-asynchronous-search
      description: Retrieve a previously submitted asynchronous search
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: serpapi-search.getsearch
      with:
        search_id: tools.search_id
      outputParameters:
      - type: object
        mapping: $.