snoopscan-com Extract API

The extract API from snoopscan-com — 2 operation(s) for extract.

Operations 2

POST /v1/extract Extract Structured #
POST /v1/search Search #

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/snoopscan-com:snoopscan-com-extract-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

snoopscan-com-extract-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: SnoopScan Extract API
  description: 'Turn any public web page into clean markdown or structured JSON: scrape, crawl, map, search and extract. One bearer key for every endpoint.'
  version: 0.1.0
servers:
- url: https://api.snoopscan.com
tags:
- name: Extract
paths:
  /v1/extract:
    post:
      tags:
      - Extract
      summary: Extract Structured
      description: 'Extract JSON in your schema from up to 100 pages.


        Returns one result per URL: `{url, data, confidence, error}`. A page that

        fails, or lacks the fields, gets an `error` without failing the request.'
      operationId: extract_structured_v1_extract_post
      parameters:
      - name: authorization
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Authorization
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ExtractRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
                title: Response Extract Structured V1 Extract Post
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /v1/search:
    post:
      tags:
      - Extract
      summary: Search
      description: Search the web. Add `scrapeOptions` to get each result's page content too.
      operationId: search_v1_search_post
      parameters:
      - name: authorization
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Authorization
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SearchRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
                title: Response Search V1 Search Post
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
components:
  schemas:
    ScrapeOptions:
      properties:
        formats:
          items:
            anyOf:
            - type: string
              enum:
              - markdown
              - html
              - rawHtml
              - links
              - media
              - summary
              - screenshot
              - json
              - network
            - $ref: '#/components/schemas/ScreenshotFormat'
            - $ref: '#/components/schemas/JsonFormat'
            - $ref: '#/components/schemas/ChangeTrackingFormat'
          type: array
          title: Formats
          description: 'What to return: `markdown`, `html`, `rawHtml`, `links`, `media`, `summary`, `screenshot`, or a `json` object carrying your schema. Ask for several in one call.'
        onlyMainContent:
          type: boolean
          title: Onlymaincontent
          description: Return the article and drop navigation, headers, footers and cookie banners. Turn it off to keep the whole page.
          default: true
        includeTags:
          items:
            type: string
          type: array
          title: Includetags
          description: CSS selectors to keep even when they sit outside the main content.
        excludeTags:
          items:
            type: string
          type: array
          title: Excludetags
          description: CSS selectors to drop before the page is read.
        maxAge:
          type: integer
          minimum: 0.0
          title: Maxage
          description: Serve a cached copy if one was taken within this many milliseconds. A cache hit costs nothing. Set `0` to force a fresh fetch.
          default: 0
        storeInCache:
          type: boolean
          title: Storeincache
          description: Keep this response in the cache so a later request can be served free.
          default: true
        waitFor:
          type: integer
          maximum: 120000.0
          minimum: 0.0
          title: Waitfor
          description: Milliseconds to wait after the page loads before reading it, for content that loads late. Renders the page in a browser, and is billed as a browser page.
          default: 0
        timeout:
          type: integer
          maximum: 300000.0
          minimum: 1000.0
          title: Timeout
          description: Give up on this request after this many milliseconds.
          default: 90000
        actions:
          items:
            oneOf:
            - $ref: '#/components/schemas/WaitAction'
            - $ref: '#/components/schemas/ClickAction'
            - $ref: '#/components/schemas/CaptchaCheckboxAction'
            - $ref: '#/components/schemas/WriteAction'
            - $ref: '#/components/schemas/PressAction'
            - $ref: '#/components/schemas/ScrollAction'
            - $ref: '#/components/schemas/ScreenshotAction'
            - $ref: '#/components/schemas/ScrapeAction'
            - $ref: '#/components/schemas/ExecuteJavascriptAction'
            discriminator:
              propertyName: type
              mapping:
                captchaCheckbox: '#/components/schemas/CaptchaCheckboxAction'
                click: '#/components/schemas/ClickAction'
                executeJavascript: '#/components/schemas/ExecuteJavascriptAction'
                press: '#/components/schemas/PressAction'
                scrape: '#/components/schemas/ScrapeAction'
                screenshot: '#/components/schemas/ScreenshotAction'
                scroll: '#/components/schemas/ScrollAction'
                wait: '#/components/schemas/WaitAction'
                write: '#/components/schemas/WriteAction'
          type: array
          title: Actions
          description: 'Steps to run in a browser before the page is read: click, type, scroll, wait or `captchaCheckbox`. A `captchaCheckbox` step needs `successSelector`.'
        captchaHandling:
          type: string
          enum:
          - auto
          - 'off'
          title: Captchahandling
          description: Click a challenge checkbox once if one appears. Set `off` to never click.
          default: auto
        captchaEvidence:
          type: boolean
          title: Captchaevidence
          description: Return screenshots from before and after an automatic checkbox click.
          default: false
        headers:
          additionalProperties:
            type: string
          type: object
          title: Headers
          description: Extra headers to send. `User-Agent` and other browser-identity headers are set for you and cannot be changed.
        mobile:
          type: boolean
          title: Mobile
          description: Read the page as a phone would see it.
          default: false
        location:
          anyOf:
          - $ref: '#/components/schemas/Location'
          - type: 'null'
          description: 'Fetch from a country, in its language, e.g. `{"country": "US"}`.'
        proxy:
          $ref: '#/components/schemas/ProxyMode'
          description: Leave on `auto` and the route is chosen for you.
          default: auto
        blockAssets:
          type: boolean
          title: Blockassets
          description: Skip images, fonts and media when the page is rendered in a browser. Faster.
          default: true
        removeBase64Images:
          type: boolean
          title: Removebase64Images
          description: Strip inline base64 images out of the returned markdown and HTML.
          default: true
        parsers:
          items:
            type: string
            const: pdf
          type: array
          title: Parsers
          description: Which document parsers may run, for example `pdf`.
      additionalProperties: false
      type: object
      title: ScrapeOptions
      description: 'How a page is fetched and what comes back: every /v1/scrape field except `url`.'
    Location:
      properties:
        country:
          type: string
          maxLength: 2
          minLength: 2
          title: Country
        languages:
          anyOf:
          - items:
              type: string
            type: array
          - type: 'null'
          title: Languages
      additionalProperties: false
      type: object
      required:
      - country
      title: Location
    WaitAction:
      properties:
        type:
          type: string
          const: wait
          title: Type
        milliseconds:
          anyOf:
          - type: integer
          - type: 'null'
          title: Milliseconds
        selector:
          anyOf:
          - type: string
          - type: 'null'
          title: Selector
      additionalProperties: false
      type: object
      required:
      - type
      title: WaitAction
    ProxyMode:
      type: string
      enum:
      - none
      - datacenter
      - residential
      - mobile
      - auto
      title: ProxyMode
    ClickAction:
      properties:
        type:
          type: string
          const: click
          title: Type
        selector:
          type: string
          title: Selector
      additionalProperties: false
      type: object
      required:
      - type
      - selector
      title: ClickAction
    ChangeTrackingFormat:
      properties:
        type:
          type: string
          const: changeTracking
          title: Type
        modes:
          items:
            type: string
            enum:
            - git-diff
            - json
          type: array
          title: Modes
      additionalProperties: false
      type: object
      required:
      - type
      title: ChangeTrackingFormat
    SearchRequest:
      properties:
        query:
          type: string
          title: Query
          description: What to search for.
        limit:
          type: integer
          maximum: 50.0
          minimum: 1.0
          title: Limit
          description: How many results, 1 to 50.
          default: 10
        sources:
          items:
            type: string
            enum:
            - web
            - news
            - images
          type: array
          title: Sources
          description: 'Which kinds of result: `web`, `news`, `images`.'
        location:
          anyOf:
          - $ref: '#/components/schemas/Location'
          - type: 'null'
          description: 'The country to search from, which changes the results, e.g. `{"country": "GB"}`.'
        scrapeOptions:
          anyOf:
          - $ref: '#/components/schemas/ScrapeOptions'
          - type: 'null'
          description: Also fetch every result page with these options. Each page fetched is charged like a scrape.
        place:
          anyOf:
          - type: string
          - type: 'null'
          title: Place
          description: Where the searcher is standing, in free text, e.g. "Austin, Texas, United States". Finer than `location`.
        language:
          anyOf:
          - type: string
            maxLength: 8
            minLength: 2
          - type: 'null'
          title: Language
          description: The language results should be in, e.g. `en`.
        device:
          anyOf:
          - type: string
            enum:
            - desktop
            - mobile
          - type: 'null'
          title: Device
          description: '`desktop` or `mobile`. Mobile results can differ from desktop ones.'
        freshness:
          anyOf:
          - type: string
            enum:
            - hour
            - day
            - week
            - month
            - year
          - type: 'null'
          title: Freshness
          description: Only results from the last `hour`, `day`, `week`, `month` or `year`.
        safeSearch:
          anyOf:
          - type: string
            enum:
            - 'off'
            - moderate
            - strict
          - type: 'null'
          title: Safesearch
          description: '`off`, `moderate` or `strict`.'
        page:
          type: integer
          maximum: 100.0
          minimum: 1.0
          title: Page
          description: Which page of results, starting at 1.
          default: 1
        autoCorrect:
          type: boolean
          title: Autocorrect
          description: Set `false` to search the query exactly as typed, e.g. a part number or a brand name.
          default: true
      additionalProperties: false
      type: object
      required:
      - query
      title: SearchRequest
      description: Search the web. Filters after `location` are optional; when set, every result matches.
    ModelSpec:
      properties:
        provider:
          type: string
          enum:
          - anthropic
          - openai
          title: Provider
        apiKey:
          type: string
          maxLength: 300
          minLength: 8
          title: Apikey
        name:
          anyOf:
          - type: string
            maxLength: 100
            minLength: 1
          - type: 'null'
          title: Name
      additionalProperties: false
      type: object
      required:
      - provider
      - apiKey
      title: ModelSpec
      description: Your own model provider and key for /v1/extract. Used for this request only, never stored.
    ExecuteJavascriptAction:
      properties:
        type:
          type: string
          const: executeJavascript
          title: Type
        script:
          type: string
          title: Script
      additionalProperties: false
      type: object
      required:
      - type
      - script
      title: ExecuteJavascriptAction
    JsonFormat:
      properties:
        schema:
          anyOf:
          - additionalProperties: true
            type: object
          - type: 'null'
          title: Schema
          description: Your own JSON Schema for the fields you want. Give this or `template`, not both.
        template:
          anyOf:
          - type: string
          - type: 'null'
          title: Template
          description: A named template instead of a schema — `product`, `article`, `jobPosting` and more. GET /v1/templates lists them with their fields.
        type:
          type: string
          const: json
          title: Type
        prompt:
          anyOf:
          - type: string
          - type: 'null'
          title: Prompt
      additionalProperties: false
      type: object
      required:
      - type
      title: JsonFormat
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    ExtractRequest:
      properties:
        schema:
          anyOf:
          - additionalProperties: true
            type: object
          - type: 'null'
          title: Schema
          description: Your own JSON Schema for the fields you want. Give this or `template`, not both.
        template:
          anyOf:
          - type: string
          - type: 'null'
          title: Template
          description: A named template instead of a schema — `product`, `article`, `jobPosting` and more. GET /v1/templates lists them with their fields.
        urls:
          items:
            type: string
          type: array
          maxItems: 100
          minItems: 1
          title: Urls
          description: The pages to extract from, 1 to 100. Each page gets its own result.
        prompt:
          anyOf:
          - type: string
          - type: 'null'
          title: Prompt
          description: Plain-language guidance on what to pick out, e.g. "the cheapest paid plan".
        scrapeOptions:
          $ref: '#/components/schemas/ScrapeOptions'
          description: 'How each page is fetched: the same options /v1/scrape takes.'
        model:
          anyOf:
          - $ref: '#/components/schemas/ModelSpec'
          - type: 'null'
          description: Your own model provider and key. Model calls are billed to your key, at no credit cost.
      additionalProperties: false
      type: object
      required:
      - urls
      title: ExtractRequest
    CaptchaCheckboxAction:
      properties:
        type:
          type: string
          const: captchaCheckbox
          title: Type
        frameSelector:
          type: string
          title: Frameselector
          default: iframe[src*="/recaptcha/"][src*="/anchor"]
        selector:
          type: string
          title: Selector
          default: '#recaptcha-anchor'
        successSelector:
          type: string
          minLength: 1
          title: Successselector
        timeoutMs:
          type: integer
          maximum: 15000.0
          minimum: 500.0
          title: Timeoutms
          default: 8000
        captureEvidence:
          type: boolean
          title: Captureevidence
          description: Return a screenshot from before and after the click.
          default: false
      additionalProperties: false
      type: object
      required:
      - type
      - successSelector
      title: CaptchaCheckboxAction
      description: Click a challenge checkbox once, then wait for `successSelector` to appear.
    WriteAction:
      properties:
        type:
          type: string
          const: write
          title: Type
        selector:
          type: string
          title: Selector
        text:
          type: string
          title: Text
      additionalProperties: false
      type: object
      required:
      - type
      - selector
      - text
      title: WriteAction
    ScreenshotAction:
      properties:
        type:
          type: string
          const: screenshot
          title: Type
        fullPage:
          type: boolean
          title: Fullpage
          default: false
      additionalProperties: false
      type: object
      required:
      - type
      title: ScreenshotAction
    PressAction:
      properties:
        type:
          type: string
          const: press
          title: Type
        key:
          type: string
          title: Key
      additionalProperties: false
      type: object
      required:
      - type
      - key
      title: PressAction
    ScrapeAction:
      properties:
        type:
          type: string
          const: scrape
          title: Type
      additionalProperties: false
      type: object
      required:
      - type
      title: ScrapeAction
    ScrollAction:
      properties:
        type:
          type: string
          const: scroll
          title: Type
        direction:
          type: string
          enum:
          - up
          - down
          title: Direction
          default: down
        amount:
          type: integer
          maximum: 50.0
          minimum: 1.0
          title: Amount
          default: 1
      additionalProperties: false
      type: object
      required:
      - type
      title: ScrollAction
    ScreenshotFormat:
      properties:
        type:
          type: string
          const: screenshot
          title: Type
        fullPage:
          type: boolean
          title: Fullpage
          default: false
        quality:
          type: integer
          maximum: 100.0
          minimum: 1.0
          title: Quality
          default: 80
      additionalProperties: false
      type: object
      required:
      - type
      title: ScreenshotFormat
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
            - type: string
            - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
        input:
          title: Input
        ctx:
          type: object
          title: Context
      type: object
      required:
      - loc
      - msg
      - type
      title: ValidationError