Search1API Screenshot API

The Screenshot API from Search1API — 1 operation(s) for screenshot.

Operations 1

POST /screenshot Render a web page as a PNG, JPEG, or WebP image #

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-screenshot-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-screenshot-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: S1 Dev Screenshot API
  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.
  description: 'Operations tagged Screenshot across 2 of this provider''s published API definitions: search1api-openapi.json, s1-dev-openapi.yml. Each path carries the servers of the definition it was published in.'
servers:
- url: https://api.search1api.com
tags:
- name: Screenshot
paths:
  /screenshot:
    post:
      operationId: screenshot
      summary: Render a web page as a PNG, JPEG, or WebP image
      description: Render a public webpage as a PNG, JPEG, or WebP image. Use it when appearance is the point — layout checks, visual previews, or content that does not survive text extraction — and control the viewport, when the page counts as ready, and whether to capture the full document or a single element by CSS selector. When you want the page's text instead, call POST /crawl. Costs 2 credits per request.
      tags:
      - Screenshot
      x-codeSamples:
      - id: js
        lang: ts
        label: TypeScript SDK
        source: "import { writeFile } from 'node:fs/promises';\nimport { Search1API } from '@search1api/client';\n\nconst client = new Search1API();\nconst screenshot = await client.screenshot('https://example.com', {\n  format: 'png',\n  fullPage: true,\n});\n\nawait writeFile('screenshot.png', screenshot.data);"
      - id: python
        lang: python
        label: Python SDK
        source: "from pathlib import Path\nfrom search1api import Search1API\n\nclient = Search1API()\nscreenshot = client.screenshot(\n    \"https://example.com\",\n    format=\"png\",\n    full_page=True,\n)\n\nPath(\"screenshot.png\").write_bytes(screenshot[\"data\"])"
      responses:
        '200':
          description: Successful response
          content:
            image/png:
              schema:
                type: string
                format: binary
            image/jpeg:
              schema:
                type: string
                format: binary
            image/webp:
              schema:
                type: string
                format: binary
        '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'
        '403':
          description: Forbidden
          content:
            application/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'
        '503':
          description: Service Unavailable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '504':
          description: Gateway Timeout
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
      security:
      - bearerAuth: []
      x-payment-info:
        protocols:
        - mpp
        pricingMode: fixed
        price: '0.006'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                url:
                  type: string
                  format: uri
                  maxLength: 4096
                format:
                  type: string
                  enum:
                  - png
                  - jpeg
                  - webp
                  default: png
                full_page:
                  type: boolean
                  default: false
                viewport:
                  type: object
                  properties:
                    width:
                      type: integer
                      minimum: 320
                      maximum: 2560
                      default: 1440
                    height:
                      type: integer
                      minimum: 200
                      maximum: 1440
                      default: 900
                    device_scale_factor:
                      type: number
                      minimum: 1
                      maximum: 2
                      default: 1
                  additionalProperties: false
                  default:
                    width: 1440
                    height: 900
                    device_scale_factor: 1
                wait_until:
                  type: string
                  enum:
                  - domcontentloaded
                  - load
                  - networkidle
                  default: load
                wait_for_selector:
                  type: string
                  minLength: 1
                  maxLength: 500
                selector:
                  type: string
                  minLength: 1
                  maxLength: 500
                delay_ms:
                  type: integer
                  minimum: 0
                  maximum: 5000
                  default: 0
                timeout_ms:
                  type: integer
                  minimum: 1000
                  maximum: 30000
                  default: 20000
                quality:
                  type: integer
                  minimum: 1
                  maximum: 100
                omit_background:
                  type: boolean
                  default: false
                color_scheme:
                  type: string
                  enum:
                  - light
                  - dark
                  default: light
                animations:
                  type: string
                  enum:
                  - disabled
                  - allow
                  default: disabled
              required:
              - url
              additionalProperties: false
            examples:
              fullPage:
                summary: Full-page PNG
                description: Capture the complete document after the load event and a short stabilization delay.
                value:
                  url: https://s1.dev
                  format: png
                  full_page: true
                  wait_until: load
                  delay_ms: 1000
                  timeout_ms: 30000
              element:
                summary: Page element as WebP
                description: Wait for one visible element and return only that element as a compressed WebP image.
                value:
                  url: https://example.com
                  format: webp
                  selector: h1
                  wait_for_selector: h1
                  quality: 85
              darkViewport:
                summary: Dark-mode viewport
                description: Capture a high-density 1280 × 720 viewport with dark color-scheme emulation.
                value:
                  url: https://s1.dev
                  format: jpeg
                  viewport:
                    width: 1280
                    height: 720
                    device_scale_factor: 2
                  color_scheme: dark
                  quality: 85
    servers:
    - url: https://api.search1api.com
components:
  schemas:
    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
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: API Key
x-refined-from:
- search1api-openapi.json
- s1-dev-openapi.yml
x-discovery:
  ownershipProofs: []