This API request provides access to current lightning deals. You can specify an ASIN to inquire about a specific deal (token cost: 1), or request the complete list for an overview (token cost: 500).
The comprehensive list includes lightning deals from the past four days, encompassing both active and expired deals.
Note: This request covers lightning deals exclusively, excluding other types of deals. For regular price-drop deals, see the Browsing Deals request.
Endpoint#
Parameters#
| Parameter | Required | Description |
|---|---|---|
key |
required | Your private API key. |
domain |
required | Integer value for the Amazon locale you want to access. See the table of valid values below. |
asin |
optional | The ASIN of the lightning deal you want to request (token cost: 1). If not specified, the entire list will be provided (token cost: 500). |
state |
optional | Limit the returned lightning deals by their state. Possible values: AVAILABLE, WAITLIST, SOLDOUT, WAITLISTFULL, EXPIRED, SUPPRESSED. Example: &state=AVAILABLE |
Valid domain values#
| Domain ID | Locale |
|---|---|
| 1 | com |
| 2 | co.uk |
| 3 | de |
| 4 | fr |
| 5 | co.jp |
| 6 | ca |
| 8 | it |
| 9 | es |
| 10 | in |
| 11 | com.mx |
| 12 | com.br |
Token Cost#
| Request | Token Cost |
|---|---|
Specific lightning deal (with asin parameter) | 1 |
Complete list (no asin parameter) | 500 (10 when the list holds 10 deals or fewer) |
Response#
An array of lightning deal objects in the lightningDeals field.
Examples#
Example request — single deal by ASIN#
Requests the lightning deal for ASIN B00M0QVG3W on Amazon.com (domain 1). Token cost: 1.
KeepaAPI api = new KeepaAPI("YOUR_API_KEY");
Request r = Request.getLightningDealRequest(AmazonLocale.US, "B00M0QVG3W");
api.sendRequest(r)
.done(result -> {
for (LightningDeal deal : result.lightningDeals) {
System.out.println(deal.dealState + " " + deal.dealPrice);
}
})
.fail(failure -> System.out.println(failure));<?php
use Keepa\KeepaAPI;
use Keepa\API\Request;
use Keepa\API\ResponseStatus;
use Keepa\objects\AmazonLocale;
$api = new KeepaAPI("YOUR_API_KEY");
$response = $api->sendRequestWithRetry(Request::getLightningDealRequest(AmazonLocale::US, "B00M0QVG3W"));
if ($response->status == ResponseStatus::OK) {
print_r($response->lightningDeals);
}import requests
params = {"key": "YOUR_API_KEY", "domain": 1, "asin": "B00M0QVG3W"}
r = requests.get("https://api.keepa.com/lightningdeal", params=params)
data = r.json()
deal = data["lightningDeals"][0]
print(deal["title"], deal["dealState"], deal["dealPrice"])const res = await fetch("https://api.keepa.com/lightningdeal?key=YOUR_API_KEY&domain=1&asin=B00M0QVG3W");
const data = await res.json();
const deal = data.lightningDeals[0];
console.log(deal.title, deal.dealState, deal.dealPrice);curl -s "https://api.keepa.com/lightningdeal?key=YOUR_API_KEY&domain=1&asin=B00M0QVG3W"Example response#
{
"timestamp": 1753651380000,
"tokensLeft": 4495,
"refillIn": 42000,
"refillRate": 5,
"tokenFlowReduction": 0,
"tokensConsumed": 1,
"processingTimeInMs": 18,
"lightningDeals": [
{
"domainId": 1,
"lastUpdate": 7663523,
"asin": "B00M0QVG3W",
"title": "Canon PowerShot SX400 Digital Camera with 30x Optical Zoom (Black)",
"sellerId": "A2L77EE7U53NWQ",
"sellerName": "Amazon Warehouse Deals",
"dealId": "76fbc441",
"dealPrice": 6999,
"currentPrice": 9999,
"image": "51InzcaVqrL.jpg",
"isPrimeEligible": true,
"isFulfilledByAmazon": true,
"rating": 45,
"totalReviews": 1834,
"dealState": "AVAILABLE",
"startTime": 7663200,
"endTime": 7663620,
"percentClaimed": 37,
"percentOff": 30,
"variation": [
{
"dimension": "Color",
"value": "Black"
}
]
}
]
}
Response shortened for readability; illustrative values. Prices are integers in the smallest currency unit (here: US cents), timestamps like lastUpdate, startTime and endTime are in Keepa Time minutes. See the Lightning Deal Object for all field semantics.
Example request — complete list with state filter#
Requests the complete lightning deal list for Amazon.de (domain 3), limited to deals that are currently AVAILABLE. Token cost: 500. Without the state filter, the list covers all lightning deals from the past four days, both active and expired.
KeepaAPI api = new KeepaAPI("YOUR_API_KEY");
Request r = Request.getLightningDealRequest(AmazonLocale.DE, null);
// the state filter has no dedicated factory parameter —
// set it via the public parameter map:
r.parameter.put("state", "AVAILABLE");
api.sendRequest(r)
.done(result -> {
System.out.println(result.lightningDeals.length + " deals");
})
.fail(failure -> System.out.println(failure));<?php
use Keepa\KeepaAPI;
use Keepa\API\Request;
use Keepa\API\ResponseStatus;
use Keepa\objects\AmazonLocale;
$api = new KeepaAPI("YOUR_API_KEY");
$r = Request::getLightningDealRequest(AmazonLocale::DE, null);
// the state filter has no dedicated factory parameter —
// set it via the public parameter map:
$r->parameter["state"] = "AVAILABLE";
$response = $api->sendRequestWithRetry($r);
if ($response->status == ResponseStatus::OK) {
echo count($response->lightningDeals) . " deals";
}import requests
params = {"key": "YOUR_API_KEY", "domain": 3, "state": "AVAILABLE"}
r = requests.get("https://api.keepa.com/lightningdeal", params=params)
data = r.json()
for deal in data["lightningDeals"]:
print(deal["asin"], deal["percentOff"], deal["percentClaimed"])const res = await fetch("https://api.keepa.com/lightningdeal?key=YOUR_API_KEY&domain=3&state=AVAILABLE");
const data = await res.json();
for (const deal of data.lightningDeals) {
console.log(deal.asin, deal.percentOff, deal.percentClaimed);
}curl -s "https://api.keepa.com/lightningdeal?key=YOUR_API_KEY&domain=3&state=AVAILABLE"