Thordata Web Scraper API

Pre-built site extractors run as asynchronous tasks - launch with POST /builder or /video_builder on scraperapi.thordata.com, then list, poll and download results from the web-scraper-api host. Twenty published parameter references cover Amazon, LinkedIn, TikTok, Instagram, Facebook, Twitter, Reddit, YouTube, Zillow, Airbnb, Booking, Walmart, eBay, Yelp, Indeed, Glassdoor, Crunchbase, GitHub, Google and Google Play. Results download as JSON, CSV, video, audio or subtitles. Supports cron scheduling and outbound webhooks on task start, success and failure, plus S3, Gmail and Snowflake delivery.

OpenAPI Specification

thordata-web-scraper-tasks-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Thordata Web Scraper API - Tasks
  version: 1.0.0
  description: List, poll and download the results of Web Scraper API tasks launched via /builder or /video_builder.
  contact:
    name: Thordata Support
    email: support@thordata.com
    url: https://www.thordata.com/contact-us
  x-derived-from: https://raw.githubusercontent.com/Thordata/thordata-sdk-spec/main/v1.json
  x-derived-by: API Evangelist enrichment pipeline
  x-derived-on: '2026-08-11'
servers:
- url: https://openapi.thordata.com/api/web-scraper-api
  description: Web Scraper API task lifecycle
tags:
- name: Tasks
  description: Task lifecycle for the Web Scraper API
paths:
  /tasks-list:
    post:
      operationId: listScraperTasks
      tags:
      - Tasks
      summary: List scraper tasks
      security:
      - PublicToken: []
        PublicKey: []
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                page:
                  type: integer
                  description: 1-based page number
                size:
                  type: integer
                  description: Page size
      responses:
        '200':
          description: Paged task list. Response carries count and list.
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: integer
                  msg:
                    type: string
                  data:
                    type: object
                    properties:
                      count:
                        type: integer
                      list:
                        type: array
                        items:
                          type: object
        '400': &id001
          description: Bad Request - invalid parameters were passed. Not billed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Envelope'
        '401': &id002
          description: Unauthorized - authentication failed; check token validity. Not billed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Envelope'
        '403': &id003
          description: Forbidden - the target server refused to fulfill the request. Not billed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Envelope'
        '429': &id004
          description: Too Many Requests - request rate exceeded the API limit. Retryable with exponential backoff. Not billed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Envelope'
        '500': &id005
          description: Internal Server Error. Retryable with exponential backoff. Not billed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Envelope'
        '504': &id006
          description: Timeout Error - the proxy server timed out waiting for the upstream server. Not billed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Envelope'
  /tasks-status:
    post:
      operationId: getScraperTaskStatus
      tags:
      - Tasks
      summary: Get the status of one or more tasks
      security:
      - PublicToken: []
        PublicKey: []
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                tasks_ids:
                  type: string
                  description: One or more task ids
              required:
              - tasks_ids
      responses: &id007
        '200':
          description: Success. Billed only when the payload code is 200.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Envelope'
        '400': *id001
        '401': *id002
        '403': *id003
        '429': *id004
        '500': *id005
        '504': *id006
  /tasks-download:
    post:
      operationId: downloadScraperTaskResult
      tags:
      - Tasks
      summary: Download a completed task result
      security:
      - PublicToken: []
        PublicKey: []
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                tasks_id:
                  type: string
                type:
                  type: string
                  description: Result artifact to download
                  enum:
                  - json
                  - csv
                  - video
                  - subtitle
                  - audio
              required:
              - tasks_id
              - type
      responses: *id007
components:
  securitySchemes:
    PublicToken:
      type: apiKey
      in: header
      name: token
      description: Public token (THORDATA_PUBLIC_TOKEN) from the Thordata Dashboard.
    PublicKey:
      type: apiKey
      in: header
      name: key
      description: Public key (THORDATA_PUBLIC_KEY) from the Thordata Dashboard.
  schemas:
    Envelope:
      type: object
      description: Thordata JSON envelope. The effective status is the payload `code` when present and not 200, otherwise
        the HTTP status (v1.json errors.precedence).
      properties:
        code:
          type: integer
          description: Application status code. 200 success, 300 not collected (not billed).
        msg:
          type: string
          description: 'Human-readable message. Alternate field names: message, error, detail, description.'
        data:
          description: Result payload; shape varies by operation.