> ## Documentation Index
> Fetch the complete documentation index at: https://docs.gladeapi.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Get Amazon Sales Estimates

> Get a versioned unit-sales run-rate projection with product scope, methodology, freshness, and explicit limitations.

Pass exactly one of `asin`, `gtin`, or `url`.

```bash theme={null}
curl --include --get \
  "https://gladeapi.com/api/amazon/product/sales" \
  --data-urlencode "asin=B0D1XD1ZV3" \
  --data-urlencode "domain=US" \
  --header "API-KEY: YOUR_GLADE_API_KEY"
```

## What the values mean

`weeklyUnitSales`, `monthlyUnitSales`, and `annualUnitSales` are projected run
rates derived from one current best-sellers-rank observation. They are not
seller-reported transactions and do not represent historical rolling or
calendar windows.

The operation currently uses `CURRENT_BEST_SELLERS_RANK` as its input signal.
It does not use rank history, purchase badges, seller-account data, or an
aligned historical price series. The response returns the immutable
`methodology.modelVersion` used for each projection.

<Warning>
  Glade API does not currently publish independent marketplace- or
  category-level calibration, confidence intervals, or historical revenue.
  Preserve the returned limitations and label these values as estimates.
</Warning>

## Example response

```json theme={null}
{
  "data": {
    "amazonProduct": {
      "asin": "B0D1XD1ZV3",
      "requestedAsin": "B0D1XD1ZV3",
      "resolvedAsin": "B0D1XD1ZV3",
      "canonicalParentAsin": "B0D1XD1ZV0",
      "familyDeduplicationKey": "B0D1XD1ZV0",
      "scope": "CHILD_ASIN",
      "salesEstimate": {
        "status": "AVAILABLE",
        "estimateType": "PROJECTED_RUN_RATE",
        "scope": "UNKNOWN",
        "weeklyUnitSales": 185,
        "monthlyUnitSales": 802,
        "annualUnitSales": 9624,
        "sourceSalesRank": 785,
        "dataFetchedAt": "2026-09-22T08:28:42.000Z",
        "estimatedAt": "2026-09-22T08:28:42.100Z",
        "sourceObservedAt": null,
        "sourceObservationTimeAvailable": false,
        "timezone": "UTC",
        "periodSemantics": {
          "historical": false,
          "calendarAligned": false,
          "rollingWindowDays": null
        },
        "methodology": {
          "modelVersion": "baseline-2026-08-14",
          "inputSignals": ["CURRENT_BEST_SELLERS_RANK"],
          "independentlyCalibrated": false,
          "confidenceIntervalAvailable": false,
          "limitations": [
            "Projected run rate from one current best-sellers-rank observation, not seller-reported transactions."
          ]
        },
        "revenue": {
          "status": "NOT_AVAILABLE",
          "reason": "ALIGNED_HISTORICAL_PRICE_WINDOW_UNAVAILABLE"
        }
      }
    }
  }
}
```

Values and identity metadata depend on the selected marketplace and the
available public listing data. Optional fields are omitted when they cannot be
established.

## Variation scope and deduplication

Use `scope` to interpret listing identity:

| Value | Meaning |
| - | - |
| `CHILD_ASIN` | The resolved listing identifies a child variation and a canonical parent was found. |
| `PARENT_ASIN` | The resolved listing matches the canonical parent. |
| `UNKNOWN` | The provider data did not establish a parent/child relationship. Do not assume family-level or child-level scope. |

When `familyDeduplicationKey` is present, group siblings by that value. When it
is absent, keep the resolved ASIN separate rather than guessing a family.
`salesEstimate.scope` separately states whether the estimate itself is known
to cover the exact ASIN or the parent family. It is currently `UNKNOWN` unless
the upstream response explicitly declares that scope, so do not sum sibling
projections when that value is unknown.

## Availability and zero values

When no usable sales rank is available, the request can succeed with:

```json theme={null}
{
  "status": "UNAVAILABLE",
  "unavailableReason": "SALES_RANK_UNAVAILABLE"
}
```

Unit fields are omitted in that state. An available projection has positive
unit values, so an unavailable input is never represented as a true zero.
Target, provider, validation, and quota failures remain HTTP errors and consume
zero units.

## Freshness

`dataFetchedAt` is the upstream result creation time, or Glade API retrieval
time when the upstream value is absent. It is not an Amazon source-observation
timestamp; `sourceObservedAt` is `null` and
`sourceObservationTimeAvailable` is `false` to state this explicitly.
`estimatedAt` is when Glade API calculated the projection. The
`X-Glade-Cache` header reports `hit`, `miss`, or `stale`, and
`X-Glade-Data-Fetched-At` preserves the retrieval time across cache hits.

## Revenue and commercial use

This operation returns units, not historical revenue. Do not multiply the
projection by a separately retrieved current price and present the result as
historical seller revenue.

Paid plans, including Starter, permit materially transformed analyses and
derived reports for multiple customers. Raw API passthrough and bulk
redistribution remain prohibited. Underlying responses may be retained for up
to 12 months for audit, reproducibility, support, and historical evidence.
Glade API attribution is not required unless an order form says otherwise;
third-party obligations still apply. Review the current
[Terms of Service](https://gladeapi.com/terms) before production use.

One successful operation consumes one unit, including an authenticated cache
hit. Failed operations consume zero units.

The Hobby plan includes 100 units per monthly quota period and requires no
payment method or recurring commitment. Hobby supports this REST endpoint;
GraphQL and MCP require a paid plan that includes those interfaces.


## OpenAPI

````yaml GET /api/amazon/product/sales
openapi: 3.1.0
info:
  title: Glade Amazon API
  version: 1.0.0
  description: >-
    Normalized Amazon product, search, seller, category, offer, review, deal,
    and estimate data.
servers:
  - url: https://gladeapi.com
security: []
paths:
  /api/amazon/product/sales:
    get:
      summary: Sales estimates
      description: 'Get sales estimates using exactly one identifier: ASIN, URL, or GTIN.'
      operationId: get_AmazonSalesEstimates
      parameters:
        - name: domain
          in: query
          required: false
          description: Amazon marketplace code.
          schema:
            type: string
            enum:
              - US
              - UK
              - CA
              - DE
              - FR
              - IT
              - ES
              - AU
              - IN
              - MX
              - BR
              - JP
              - PL
            default: US
        - name: asin
          in: query
          required: false
          description: A 10-character Amazon Standard Identification Number.
          schema:
            type: string
            pattern: ^[A-Za-z0-9]{10}$
        - name: url
          in: query
          required: false
          description: A canonical HTTPS product URL on a supported Amazon host.
          schema:
            type: string
            format: uri
        - name: gtin
          in: query
          required: false
          description: A valid ISBN-10, UPC, EAN, or GTIN value.
          schema:
            type: string
      responses:
        '200':
          description: Successful Amazon data response
          content:
            application/json:
              schema:
                type: object
                required:
                  - data
                properties:
                  data:
                    type: object
                    required:
                      - amazonProduct
                    properties:
                      amazonProduct:
                        $schema: http://json-schema.org/draft-07/schema#
                        type: object
                        properties:
                          salesEstimate:
                            type: object
                            properties:
                              weeklyUnitSales:
                                type: integer
                                minimum: 0
                                maximum: 9007199254740991
                              monthlyUnitSales:
                                type: integer
                                minimum: 0
                                maximum: 9007199254740991
                              annualUnitSales:
                                type: integer
                                minimum: 0
                                maximum: 9007199254740991
                            additionalProperties: false
                        additionalProperties: false
        '400':
          $ref: '#/components/responses/Error'
        '401':
          $ref: '#/components/responses/Error'
        '402':
          $ref: '#/components/responses/Error'
        '403':
          $ref: '#/components/responses/Error'
        '404':
          $ref: '#/components/responses/Error'
        '429':
          $ref: '#/components/responses/Error'
        '500':
          $ref: '#/components/responses/Error'
        '502':
          $ref: '#/components/responses/Error'
        '503':
          $ref: '#/components/responses/Error'
        '504':
          $ref: '#/components/responses/Error'
      security:
        - ApiKeyAuth: []
        - BearerAuth: []
components:
  responses:
    Error:
      description: Standard error response
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  schemas:
    Error:
      type: object
      required:
        - success
        - errors
      properties:
        success:
          const: false
        errors:
          type: array
          items:
            type: object
            required:
              - code
              - message
            properties:
              code:
                type: integer
              message:
                type: string
              path:
                type: array
                items:
                  type: string
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: API-KEY
    BearerAuth:
      type: http
      scheme: bearer

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.