EcomScout Products API

Product ideas, store listings, and price changes

Operations 8

GET /v1/stores/{domain}/products Products for one store #
GET /v1/products/search Search product ideas (crowding, price, trend) #
GET /v1/products/search/suggest Autocomplete product ideas #
GET /v1/products/search/trending Trending product ideas #
GET /v1/products/research/{id} Report for a product idea #
GET /v1/products/research/{id}/sellers Stores selling this product idea #
GET /v1/products Search listings across stores #
GET /v1/products/{domain}/{handle} One listing by store + handle #

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/ecomscout-com:ecomscout-com-products-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

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

ecomscout-com-products-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: EcomScout Public Products API
  version: 0.7.0
  description: Unified ecommerce intelligence API for coding agents, app builders, and VC/PE analysts. Stores, products, apps, analytics, changes, signals, scrapes — one JSON object per resource. Read /v1/llms.txt then /v1/examples before calling data endpoints. Only 2xx responses burn daily quota and plan buckets; 4xx do not. Store contacts (company, emails, phones) on GET /v1/stores/{domain} and GET /v1/stores/{domain}/contacts.
servers:
- url: https://api.ecomscout.com
security:
- apiKey: []
- bearer: []
tags:
- name: Products
  description: Product ideas, store listings, and price changes
paths:
  /v1/stores/{domain}/products:
    get:
      tags:
      - Products
      summary: Products for one store
      operationId: listStoreProducts
      parameters:
      - $ref: '#/components/parameters/domain'
  /v1/products/search:
    get:
      tags:
      - Products
      summary: Search product ideas (crowding, price, trend)
      operationId: searchProductResearch
      parameters:
      - name: q
        in: query
        required: true
        schema:
          type: string
          minLength: 2
        example: dog cooling mat
      - name: page
        in: query
        schema:
          type: integer
          default: 1
      - name: market
        in: query
        schema:
          type: string
        description: 'Comma verdicts: UNTAPPED,LOW COMPETITION,COMPETITIVE,SATURATED'
      - name: priceMin
        in: query
        schema:
          type: number
      - name: priceMax
        in: query
        schema:
          type: number
      - name: trending
        in: query
        schema:
          type: boolean
      - name: countries
        in: query
        schema:
          type: string
        description: ISO-2 comma list
      - name: region
        in: query
        schema:
          type: string
        description: North America, Europe, Asia, … expanded to countries
  /v1/products/search/suggest:
    get:
      tags:
      - Products
      summary: Autocomplete product ideas
      operationId: suggestProductResearch
      parameters:
      - name: q
        in: query
        required: true
        schema:
          type: string
      - name: limit
        in: query
        schema:
          type: integer
          default: 8
          maximum: 15
  /v1/products/search/trending:
    get:
      tags:
      - Products
      summary: Trending product ideas
      operationId: trendingProductResearch
  /v1/products/research/{id}:
    get:
      tags:
      - Products
      summary: Report for a product idea
      operationId: getProductResearch
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
  /v1/products/research/{id}/sellers:
    get:
      tags:
      - Products
      summary: Stores selling this product idea
      operationId: listProductResearchSellers
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      - name: sort
        in: query
        schema:
          type: string
          enum:
          - traffic
          - price
      - name: page
        in: query
        schema:
          type: integer
          default: 1
      - name: limit
        in: query
        schema:
          type: integer
          default: 25
          maximum: 100
  /v1/products:
    get:
      tags:
      - Products
      summary: Search listings across stores
      operationId: listProducts
      parameters:
      - name: q
        in: query
        schema:
          type: string
      - name: storeDomain
        in: query
        schema:
          type: string
      - name: vendor
        in: query
        schema:
          type: string
      - name: productType
        in: query
        schema:
          type: string
      - name: tag
        in: query
        schema:
          type: string
      - name: storeVertical
        in: query
        schema:
          type: string
      - name: isBestSeller
        in: query
        schema:
          type: boolean
      - name: priceMin
        in: query
        schema:
          type: number
      - name: priceMax
        in: query
        schema:
          type: number
      - name: sort
        in: query
        schema:
          type: string
          enum:
          - price
          - position
          - scraped
  /v1/products/{domain}/{handle}:
    get:
      tags:
      - Products
      summary: One listing by store + handle
      operationId: getProduct
components:
  parameters:
    domain:
      name: domain
      in: path
      required: true
      schema:
        type: string
      description: Bare domain or URL. gruntstyle.com and https://www.gruntstyle.com both work.
  securitySchemes:
    apiKey:
      type: apiKey
      in: header
      name: X-Api-Key
    bearer:
      type: http
      scheme: bearer