Search1API Search API

The Search API from Search1API — 4 operation(s) for search.

Operations 4

POST /news Search news articles across multiple sources #
POST /ask Search the engines a natural-language request calls for #

Documentation

Specifications

Schemas & Data

Other Resources

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/s1-dev:s1-dev-search-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

s1-dev-search-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Search1 Search API
  description: Web search, news, crawling, screenshot, and content extraction APIs for AI agents. Supports pay-per-request via MPP and x402 protocols.
  version: 1.0.0
  x-guidance: Search1API provides web search, news aggregation, URL crawling, webpage screenshots, sitemap extraction, trending topics, content extraction, and deep crawling. All paid endpoints accept POST with a JSON body. Use POST /search with a "query" field for web search. Use POST /news with a "query" field for news. Use POST /ask with a natural-language "query" to have Search1API choose the engines and time window and return only relevant results (API key only). Use POST /crawl with a "url" field to crawl a page. Use POST /screenshot with a "url" field to render a PNG, JPEG, or WebP image. Use POST /sitemap with a "url" field to extract sitemap URLs. Use POST /trending with a "search_service" field for trends. Use POST /extract with a "url" field for structured content extraction. Use POST /deepcrawl with a "url" field for deep multi-page crawling.
servers:
- url: https://api.search1api.com
tags:
- name: Search
paths:
  /search:
    post:
      operationId: search
      summary: Search the web using multiple search engines
      description: Search the live public web when the answer depends on current information, sources, or research a model's training data cannot cover. Returns ranked results with id, title, URL, snippet, and `published_date` (ISO 8601, when the engine exposes one) across 13+ engines, with optional images. Set `crawl_results` to pull the top N result pages in the same call — each crawled page is billed as an additional crawl — or pass a result URL to POST /crawl separately. Costs 1 credit per request.
      tags:
      - Search
      x-codeSamples:
      - id: js
        lang: ts
        label: TypeScript SDK
        source: "import { Search1API } from '@search1api/client';\n\nconst client = new Search1API();\nconst response = await client.search('latest AI agent frameworks', {\n  maxResults: 10,\n});\n\nconsole.log(response.results);"
      - id: python
        lang: python
        label: Python SDK
        source: "from search1api import Search1API\n\nclient = Search1API()\nresponse = client.search(\n    \"latest AI agent frameworks\",\n    max_results=10,\n)\n\nprint(response[\"results\"])"
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                oneOf:
                - $ref: '#/components/schemas/SearchResponse'
                - $ref: '#/components/schemas/SearchBatchResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '402':
          description: Payment Required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '502':
          description: Bad Gateway
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
      security:
      - bearerAuth: []
      x-payment-info:
        protocols:
        - mpp
        pricingMode: fixed
        price: '0.003'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              anyOf:
              - type: object
                properties:
                  query:
                    type: string
                    minLength: 1
                  search_service:
                    type: string
                    enum:
                    - google
                    - bing
                    - bingcn
                    - duckduckgo
                    - yahoo
                    - yandex
                    - youtube
                    - x
                    - reddit
                    - github
                    - arxiv
                    - wechat
                    - bilibili
                    - imdb
                    - wikipedia
                    - ''
                    - baidu
                    - '360'
                    - quark
                  max_results:
                    type: integer
                    minimum: 1
                    maximum: 50
                    default: 5
                  page:
                    type: integer
                    minimum: 1
                    maximum: 100
                    default: 1
                  crawl_results:
                    type: integer
                    minimum: 0
                    maximum: 50
                    default: 0
                  image:
                    type: boolean
                    default: false
                  include_sites:
                    type: array
                    items:
                      type: string
                    default: []
                  exclude_sites:
                    type: array
                    items:
                      type: string
                    default: []
                  language:
                    type: string
                  time_range:
                    type: string
                    enum:
                    - day
                    - week
                    - month
                    - year
                    - ''
                required:
                - query
                additionalProperties: false
              - type: array
                items:
                  type: object
                  properties:
                    query:
                      type: string
                      minLength: 1
                    search_service:
                      type: string
                      enum:
                      - google
                      - bing
                      - bingcn
                      - duckduckgo
                      - yahoo
                      - yandex
                      - youtube
                      - x
                      - reddit
                      - github
                      - arxiv
                      - wechat
                      - bilibili
                      - imdb
                      - wikipedia
                      - ''
                      - baidu
                      - '360'
                      - quark
                    max_results:
                      type: integer
                      minimum: 1
                      maximum: 50
                      default: 5
                    page:
                      type: integer
                      minimum: 1
                      maximum: 100
                      default: 1
                    crawl_results:
                      type: integer
                      minimum: 0
                      maximum: 50
                      default: 0
                    image:
                      type: boolean
                      default: false
                    include_sites:
                      type: array
                      items:
                        type: string
                      default: []
                    exclude_sites:
                      type: array
                      items:
                        type: string
                      default: []
                    language:
                      type: string
                    time_range:
                      type: string
                      enum:
                      - day
                      - week
                      - month
                      - year
                      - ''
                  required:
                  - query
                  additionalProperties: false
                minItems: 1
  /news:
    post:
      operationId: news
      summary: Search news articles across multiple sources
      description: Search recent news when the question is about events, announcements, or coverage rather than reference material. Returns articles from verified publishers with title, URL, snippet, `published_date` (ISO 8601, when known), and optional full page content, filterable by site, language, and time range. For questions that are not time-sensitive, prefer POST /search. Costs 1 credit per request.
      tags:
      - Search
      x-codeSamples:
      - id: js
        lang: ts
        label: TypeScript SDK
        source: "import { Search1API } from '@search1api/client';\n\nconst client = new Search1API();\nconst response = await client.news('latest AI industry news', {\n  maxResults: 10,\n});\n\nconsole.log(response.results);"
      - id: python
        lang: python
        label: Python SDK
        source: "from search1api import Search1API\n\nclient = Search1API()\nresponse = client.news(\n    \"latest AI industry news\",\n    max_results=10,\n)\n\nprint(response[\"results\"])"
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                oneOf:
                - $ref: '#/components/schemas/NewsResponse'
                - $ref: '#/components/schemas/NewsBatchResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '402':
          description: Payment Required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '502':
          description: Bad Gateway
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
      security:
      - bearerAuth: []
      x-payment-info:
        protocols:
        - mpp
        pricingMode: fixed
        price: '0.003'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              anyOf:
              - type: object
                properties:
                  query:
                    type: string
                    minLength: 1
                  search_service:
                    type: string
                    enum:
                    - google
                    - bing
                    - duckduckgo
                    - yahoo
                    - hackernews
                    - ''
                    - reuters
                  max_results:
                    type: integer
                    minimum: 1
                    maximum: 50
                    default: 5
                  crawl_results:
                    type: integer
                    minimum: 0
                    maximum: 50
                    default: 0
                  image:
                    type: boolean
                    default: false
                  include_sites:
                    type: array
                    items:
                      type: string
                    default: []
                  exclude_sites:
                    type: array
                    items:
                      type: string
                    default: []
                  language:
                    type: string
                  time_range:
                    type: string
                    enum:
                    - day
                    - week
                    - month
                    - year
                    - ''
                required:
                - query
                additionalProperties: false
              - type: array
                items:
                  type: object
                  properties:
                    query:
                      type: string
                      minLength: 1
                    search_service:
                      type: string
                      enum:
                      - google
                      - bing
                      - duckduckgo
                      - yahoo
                      - hackernews
                      - ''
                      - reuters
                    max_results:
                      type: integer
                      minimum: 1
                      maximum: 50
                      default: 5
                    crawl_results:
                      type: integer
                      minimum: 0
                      maximum: 50
                      default: 0
                    image:
                      type: boolean
                      default: false
                    include_sites:
                      type: array
                      items:
                        type: string
                      default: []
                    exclude_sites:
                      type: array
                      items:
                        type: string
                      default: []
                    language:
                      type: string
                    time_range:
                      type: string
                      enum:
                      - day
                      - week
                      - month
                      - year
                      - ''
                  required:
                  - query
                  additionalProperties: false
                minItems: 1
  /ask:
    post:
      operationId: ask
      summary: Search the engines a natural-language request calls for
      description: Agentic search. Describe what you are looking for in plain language and let a decision model (currently TypeSafe Jev) decide where to look. It picks up to five engines (web search, Hacker News, Reddit, GitHub, X, arXiv, Wikipedia, IMDb, WeChat, YouTube), rewrites the request into search keywords, infers a publication window from phrases such as "this week", searches the engines in parallel, and returns only the results judged relevant, merged and ranked, so agents read fewer off-topic results. The request takes only `query`; engines, keywords, and the window are always chosen by the model, and the response reports them in `intent`. Use POST /search instead when you already know the engine and keywords and want its raw ranking. Costs 5 credits per request.
      tags:
      - Search
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AskResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '402':
          description: Payment Required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '502':
          description: Bad Gateway
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
      security:
      - bearerAuth: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                query:
                  type: string
                  minLength: 1
                  maxLength: 500
                  description: What you are looking for, in natural language. Platform hints ("on Reddit", "papers") and time hints ("this week") steer engine and time-range selection.
              required:
              - query
              additionalProperties: false
            examples:
              community:
                summary: Let Search1API choose
                description: 'Engines and the time window are inferred from the wording: community discussion, within the past month.'
                value:
                  query: What are developers saying about Bun 1.3 this month?
  /trending:
    post:
      operationId: trending
      summary: Get trending topics from various platforms
      description: List what is currently popular on a supported platform, such as GitHub repositories or Hacker News stories, when the user asks what is trending or new right now. This reads a platform's own live ranking rather than performing a query — for topic searches use POST /search. Costs 1 credit per request.
      tags:
      - Search
      x-codeSamples:
      - id: js
        lang: ts
        label: TypeScript SDK
        source: "import { Search1API } from '@search1api/client';\n\nconst client = new Search1API();\nconst response = await client.trending('github', {\n  maxResults: 10,\n});\n\nconsole.log(response);"
      - id: python
        lang: python
        label: Python SDK
        source: 'from search1api import Search1API


          client = Search1API()

          response = client.trending("github", max_results=10)


          print(response)'
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TrendingResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '402':
          description: Payment Required
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '502':
          description: Bad Gateway
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
      security:
      - bearerAuth: []
      x-payment-info:
        protocols:
        - mpp
        pricingMode: fixed
        price: '0.003'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                search_service:
                  type: string
                  minLength: 1
                max_results:
                  type: integer
                  minimum: 1
              required:
              - search_service
              additionalProperties: false
components:
  schemas:
    SearchParameters:
      type: object
      properties:
        query:
          type: string
          minLength: 1
        search_service:
          type: string
          enum:
          - google
          - bing
          - bingcn
          - duckduckgo
          - yahoo
          - yandex
          - youtube
          - x
          - reddit
          - github
          - arxiv
          - wechat
          - bilibili
          - imdb
          - wikipedia
          - ''
          - baidu
          - '360'
          - quark
        max_results:
          type: integer
          minimum: 1
          maximum: 50
          default: 5
        page:
          type: integer
          minimum: 1
          maximum: 100
          default: 1
        crawl_results:
          type: integer
          minimum: 0
          maximum: 50
          default: 0
        image:
          type: boolean
          default: false
        include_sites:
          type: array
          items:
            type: string
          default: []
        exclude_sites:
          type: array
          items:
            type: string
          default: []
        language:
          type: string
        time_range:
          type: string
          enum:
          - day
          - week
          - month
          - year
          - ''
      required:
      - query
      additionalProperties: false
    SearchResult:
      type: object
      required:
      - title
      - link
      - snippet
      properties:
        title:
          type: string
        link:
          type: string
          format: uri
        snippet:
          type: string
        content:
          type: string
        published_date:
          type: string
          description: 'When the page was published, as ISO 8601: `YYYY-MM-DD` when only the day is known (web search engines), or `YYYY-MM-DDTHH:MM:SSZ` in UTC when the source carries a time (x, reddit, github, arxiv, youtube, bilibili, wechat, news feeds). Omitted when the source exposes no date, so treat it as optional per result.'
          example: '2026-09-03'
        kind:
          type: string
          enum:
          - repo
          - issue
          - pr
          - discussion
          description: 'What a `github` result is: a repository, an issue, a pull request, or a discussion. Only present for `search_service: "github"`.'
        stars:
          type: integer
          description: 'Stargazer count of a `github` repository result (`kind: "repo"`).'
        language:
          type: string
          description: 'Primary language of a `github` repository result (`kind: "repo"`). Omitted when GitHub reports none.'
        num_comments:
          type: integer
          description: Comment count on a `github` issue, pull request or discussion, or on a `hackernews` thread (POST /news).
        story_url:
          type: string
          format: uri
          description: 'POST /news with `search_service: "hackernews"` only: the submitted article. `link` is the Hacker News discussion thread; `story_url` is empty for Ask HN / Show HN text posts.'
        points:
          type: integer
          description: 'POST /news with `search_service: "hackernews"` only: upvotes on the thread.'
      additionalProperties: true
    ApiError:
      type: object
      description: 'Search1API error. Every JSON error carries `ok: false`, `error` (a short status-derived label) and `message` (human-readable detail); validation failures add `errors`. Payment challenges may use RFC 9457 problem detail fields.'
      properties:
        ok:
          type: boolean
          enum:
          - false
        error:
          type: string
        message:
          type: string
        errors:
          type: array
          items:
            type: object
            properties:
              field:
                type: string
              message:
                type: string
              code:
                type: string
        type:
          type: string
          format: uri
        title:
          type: string
        status:
          type: integer
        detail:
          type: string
      additionalProperties: true
    AskResult:
      type: object
      required:
      - title
      - link
      - snippet
      - source
      - relevance
      properties:
        title:
          type: string
        link:
          type: string
          format: uri
        snippet:
          type: string
        published_date:
          type: string
          description: When the page was published, as ISO 8601 (`YYYY-MM-DD` or `YYYY-MM-DDTHH:MM:SSZ`). Omitted when the engine exposes no date.
          example: '2026-09-03'
        source:
          type: string
          description: Engine that returned the result.
        relevance:
          type: number
          minimum: 0
          maximum: 1
          description: How likely the result is to be about the query, two decimals. Only results scoring at least 0.5 are returned.
    TrendingResult:
      type: object
      required:
      - title
      - url
      properties:
        title:
          type: string
        url:
          type: string
          format: uri
        description:
          type:
          - string
          - 'null'
    AskResponse:
      type: object
      required:
      - query
      - intent
      - results
      - errors
      properties:
        query:
          type: string
          description: The query as sent.
        intent:
          type: object
          required:
          - search_query
          - sources
          - time_range
          description: How the request was interpreted and searched.
          properties:
            search_query:
              type: string
              description: Keywords sent to the engines, with platform and time phrases removed.
            sources:
              type: array
              items:
                type: string
              description: Engines searched.
            time_range:
              type:
              - string
              - 'null'
              enum:
              - day
              - week
              - month
              - year
              - null
              description: Publication window applied, or null for none.
        results:
          type: array
          items:
            $ref: '#/components/schemas/AskResult'
          description: Relevant results from every engine, best first, with duplicates merged. May be empty.
        errors:
          type: array
          description: Engines that failed while others completed. The request is still charged.
          items:
            type: object
            required:
            - source
            - message
            properties:
              source:
                type: string
              message:
                type: string
    SearchResponse:
      type: object
      required:
      - searchParameters
      - results
      properties:
        searchParameters:
          $ref: '#/components/schemas/SearchParameters'
        results:
          type: array
          items:
            $ref: '#/components/schemas/SearchResult'
        images:
          type: array
          items:
            type: string
            format: uri
    SearchBatchResponse:
      type: object
      required:
      - results
      - summary
      properties:
        results:
          type: array
          items:
            type: object
            required:
            - success
            - cost
            properties:
              success:
                type: boolean
              data:
                $ref: '#/components/schemas/SearchResponse'
              error:
                type: object
                properties:
                  message:
                    type: string
                  statusCode:
                    type: integer
              cost:
                type: integer
                minimum: 0
        summary:
          type: object
          required:
          - total
          - successful
          - failed
          - totalCost
          properties:
            total:
              type: integer
              minimum: 0
            successful:
              type: integer
              minimum: 0
            failed:
              type: integer
              minimum: 0
            totalCost:
              type: integer
              minimum: 0
    NewsResponse:
      type: object
      required:
      - searchParameters
      - results
      properties:
        searchParameters:
          $ref: '#/components/schemas/NewsParameters'
        results:
          type: array
          items:
            $ref: '#/components/schemas/SearchResult'
        images:
          type: array
          items:
            type: string
            format: uri
    NewsParameters:
      type: object
      properties:
        query:
          type: string
          minLength: 1
        search_service:
          type: string
          enum:
          - google
          - bing
          - duckduckgo
          - yahoo
          - hackernews
          - ''
          - reuters
        max_results:
          type: integer
          minimum: 1
          maximum: 50
          default: 5
        crawl_results:
          type: integer
          minimum: 0
          maximum: 50
          default: 0
        image:
          type: boolean
          default: false
        include_sites:
          type: array
          items:
            type: string
          default: []
        exclude_sites:
          type: array
          items:
            type: string
          default: []
        language:
          type: string
        time_range:
          type: string
          enum:
          - day
          - week
          - month
          - year
          - ''
      required:
      - query
      additionalProperties: false
    NewsBatchResponse:
      type: object
      required:
      - results
      - summary
      properties:
        results:
          type: array
          items:
            type: object
            required:
            - success
            - cost
            properties:
              success:
                type: boolean
              data:
                $ref: '#/components/schemas/NewsResponse'
              error:
                type: object
                properties:
                  message:
                    type: string
                  statusCode:
                    type: integer
              cost:
                type: integer
                minimum: 0
        summary:
          type: object
          required:
          - total
          - successful
          - failed
          - totalCost
          properties:
            total:
              type: integer
              minimum: 0
            successful:
              type: integer
              minimum: 0
            failed:
              type: integer
              minimum: 0
            totalCost:
              type: integer
              minimum: 0
    TrendingRequest:
      type: object
      properties:
        search_service:
          type: string
          minLength: 1
        max_results:
          type: integer
          minimum: 1
      required:
      - search_service
      additionalProperties: false
    TrendingResponse:
      type: object
      required:
      - trendingParameters
      - results
      properties:
        trendingParameters:
          $ref: '#/components/schemas/TrendingRequest'
        results:
          type: array
          items:
            $ref: '#/components/schemas/TrendingResult'
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: API Key
x-discovery:
  ownershipProofs: []