TradeDataHub Public API Datasets API

Dataset metadata, pricing, masked previews.

Operations 4

GET /api/v1/datasets List datasets with optional filters (deterministic full catalog enumeration) #
GET /api/v1/datasets/{product_id} Get a single dataset's public metadata #
GET /api/v1/datasets/{product_id}/price Get price and availability #
GET /api/v1/datasets/{product_id}/preview Get a masked availability preview (no paid contact values) #

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/tradedatahub-datasets-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

tradedatahub-datasets-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: TradeDataHub Public Datasets API
  version: 1.0.0
  description: Free machine-readable discovery endpoints over the canonical product catalog.
servers:
- url: https://www.tradedatahub.net
tags:
- name: Datasets
  description: Dataset metadata, pricing, masked previews.
paths:
  /api/v1/datasets:
    get:
      tags:
      - Datasets
      summary: List datasets with optional filters (deterministic full catalog enumeration)
      description: Use filters to enumerate the complete purchasable catalog without scraping HTML. Filter values must match canonical names exactly (e.g. `state=Texas`, `trade=HVAC Contractor`). Paginate with limit/offset (limit<=100).
      parameters:
      - name: state
        in: query
        required: false
        schema:
          type: string
        description: Exact state name, e.g. `Texas`.
      - name: trade
        in: query
        required: false
        schema:
          type: string
        description: Exact trade name, e.g. `Roofer`.
      - name: city
        in: query
        required: false
        schema:
          type: string
        description: Exact city name.
      - name: type
        in: query
        required: false
        schema:
          type: string
          enum:
          - city_trade
          - state_trade
          - state
          - mega_pack
      - name: limit
        in: query
        required: false
        schema:
          type: integer
          minimum: 1
          maximum: 100
          default: 100
      - name: offset
        in: query
        required: false
        schema:
          type: integer
          minimum: 0
          default: 0
      responses:
        '200':
          description: Dataset listings (paginated)
          content:
            application/json:
              schema:
                type: object
                required:
                - api_version
                - pagination
                - datasets
                properties:
                  api_version:
                    type: string
                  pagination:
                    $ref: '#/components/schemas/Pagination'
                  datasets:
                    type: array
                    items:
                      $ref: '#/components/schemas/Dataset'
        '400':
          description: Invalid limit/offset
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      operationId: getApiV1Datasets
      x-operation-id-source: derived
  /api/v1/datasets/{product_id}:
    get:
      tags:
      - Datasets
      summary: Get a single dataset's public metadata
      parameters:
      - $ref: '#/components/parameters/ProductId'
      responses:
        '200':
          description: Dataset metadata
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Dataset'
        '404':
          description: Dataset not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      operationId: getApiV1DatasetsByProductId
      x-operation-id-source: derived
  /api/v1/datasets/{product_id}/price:
    get:
      tags:
      - Datasets
      summary: Get price and availability
      parameters:
      - $ref: '#/components/parameters/ProductId'
      responses:
        '200':
          description: Price metadata
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Price'
              example:
                api_version: 1.0.0
                product_id: state-trade:florida:appliance-repair-technician
                product_type: state_trade
                state: Florida
                trade: Appliance Repair Technician
                record_count: 434
                amount_cents: 1900
                price: '19.00'
                currency: USD
                available_for_purchase: true
        '404':
          description: Dataset not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      operationId: getApiV1DatasetsByProductIdPrice
      x-operation-id-source: derived
  /api/v1/datasets/{product_id}/preview:
    get:
      tags:
      - Datasets
      summary: Get a masked availability preview (no paid contact values)
      description: 'Returns masked preview records only: business identities are replaced with `Masked business` and only availability booleans (phone_available/website_available) plus city, trade, and verification_date are exposed. Actual contact values are delivered only after purchase.'
      parameters:
      - $ref: '#/components/parameters/ProductId'
      responses:
        '200':
          description: Masked preview
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Preview'
        '404':
          description: Preview unavailable for this dataset type or product
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      operationId: getApiV1DatasetsByProductIdPreview
      x-operation-id-source: derived
components:
  schemas:
    Preview:
      type: object
      required:
      - api_version
      - product_id
      - classification
      - records
      properties:
        api_version:
          type: string
        product_id:
          type: string
        classification:
          type: string
        record_count:
          type: integer
        fields:
          type: array
          items:
            type: string
        records:
          type: array
          items:
            $ref: '#/components/schemas/PreviewRecord'
        notice:
          type: string
    Price:
      $ref: '#/components/schemas/Dataset'
    Error:
      type: object
      required:
      - api_version
      - error
      properties:
        api_version:
          type: string
        error:
          type: object
          required:
          - code
          - message
          properties:
            code:
              type: string
            message:
              type: string
            details:
              type: object
              additionalProperties: true
    PreviewRecord:
      type: object
      required:
      - business
      - city
      - trade
      - phone_available
      - website_available
      properties:
        business:
          type: string
          description: Always the literal `Masked business` in previews.
          example: Masked business
        city:
          type: string
        trade:
          type: string
        phone_available:
          type: boolean
          description: Whether the purchased record includes a phone value.
        website_available:
          type: boolean
          description: Whether the purchased record includes a website value.
        verification_date:
          type: string
          description: Source-pipeline verification date (YYYY-MM-DD).
    Dataset:
      type: object
      required:
      - product_id
      - product_type
      - record_count
      - price
      - currency
      properties:
        product_id:
          type: string
        product_type:
          type: string
          enum:
          - city_trade
          - state_trade
          - state
          - mega_pack
        state:
          type: string
        city:
          type: string
        trade:
          type: string
        record_count:
          type: integer
        amount_cents:
          type: integer
        price:
          type: string
        currency:
          type: string
        last_updated:
          type: string
        available_for_purchase:
          type: boolean
    Pagination:
      type: object
      required:
      - total
      - limit
      - offset
      properties:
        total:
          type: integer
        limit:
          type: integer
        offset:
          type: integer
  parameters:
    ProductId:
      name: product_id
      in: path
      required: true
      schema:
        type: string
        maxLength: 128
      description: 'Canonical product identifier. Formats: `state:{state_slug}` (e.g. `state:texas`), `state-trade:{state_slug}:{trade_slug}` (e.g. `state-trade:florida:roofer`), `city-trade:{state_slug}:{city_slug}:{trade_slug}` (e.g. `city-trade:texas:austin:plumber`), `mega-pack:seven-live-states`. Slugs are lowercase hyphenated; always derive product_id values from the discovery endpoints rather than constructing them ad hoc.'