# Migrating from the Keepa API

> Most Keepa integrations look products up by ASIN or barcode, read the price-history arrays, and track a list of products. Each of those has a direct equivalent in the ShopSavvy Data API, which adds prices from retailers beyond Amazon. Sales rank and Buy Box data do not carry over.

*Source: https://shopsavvy.com/compare/migrate-from-keepa-api-to-shopsavvy-data-api*

*Updated 2026-10-12 · Keepa API docs checked 2026-10-12*

---

**Time:** About 1-2 days for a typical integration: an hour to get a key and make the first calls, the rest to replace history decoding and tracking.

## Before you start

- List the Keepa request types you use (product, tracking, deals, sellers) and the product fields you read.
- Export the ASINs or barcodes you track.
- Decide whether you want Amazon-only views (retailer=amazon.com) or every retailer.

## Steps

### 1. Get a key

Start a 14-day Starter trial at shopsavvy.com/data#pricing. The dashboard creates an API key; send it as a bearer token.

```
curl -H "Authorization: Bearer ss_live_..." "https://api.shopsavvy.com/v1/products?ids=B07GV2S1GS"
```

### 2. Replace product requests

Keepa's product request takes asin or a product code and a domain. ShopSavvy takes any identifier in ids (ASIN, UPC/EAN/ISBN, URL, model number), up to 100 per call, and has no domain parameter: offers are US retailers in USD.

### 3. Replace price history

Keepa returns history as csv arrays of Keepa Time minutes and prices per history type. ShopSavvy returns history per offer as an array of points with ISO 8601 timestamps and USD prices, newest first, for a window of up to 366 days per call.

```
GET /v1/products/offers/history?ids=611247373064&start=2026-07-01&end=2026-09-30
```

### 4. Replace tracking

Schedule products for hourly, daily or weekly re-checks with PUT /v1/products/scheduled, and register a webhook for price_drop and availability_change events. Scheduling costs 1 credit per product; refreshes are not charged.

```
PUT /v1/products/scheduled?ids=B07GV2S1GS&schedule=daily
```

### 5. Replace token accounting

Keepa meters tokens per minute. ShopSavvy meters monthly credits (meta.credits_remaining on every response, GET /v1/usage for the period) and a separate limit of 1,000 requests per rolling hour.

## Endpoint and field mapping

| Keepa API | ShopSavvy Data API | Note |
|---|---|---|
| `GET /product?asin=…&domain=1` | `GET /v1/products?ids=<ASIN>` | Product record; add /offers for prices |
| `GET /product?code=… (UPC/EAN/ISBN-13)` | `GET /v1/products?ids=<barcode>` | Same identifier |
| `product.csv[] (Keepa Time)` | `offers[].history[] (timestamp, price, availability)` | Per retailer offer, USD, ISO 8601 |
| `product.stats` | `Compute from history` | No precomputed stats object |
| `tracking (notifyIf, thresholdValues)` | `PUT /v1/products/scheduled + POST /v1/webhooks` | Webhook events: price_drop, availability_change, schedule_completion |
| `tokensLeft` | `meta.credits_remaining` | Monthly credits |
| `salesRanks, buyBox data, seller requests` | `none` | Does not transfer |

"Unconfirmed" means we could not confirm the Keepa API field name from its public documentation on 2026-10-12.

## What does not transfer

- Amazon sales rank and sales-rank history
- Buy Box history and Amazon seller search
- Non-US Amazon marketplaces (ShopSavvy offers are USD)
- Keepa's deals and best-seller list requests

## Questions

### Can I keep Keepa for sales rank and use ShopSavvy for prices?

Yes. Both accept ASINs, so the same product list works with both.

### How much history comes across?

You do not move history: ShopSavvy already has its own, back to 2011 and dense from 2019, for the products and retailers it has observed. Request up to 366 days per call.

Comparison: https://shopsavvy.com/compare/shopsavvy-data-api-vs-keepa-api · Documentation: https://shopsavvy.com/data/documentation
