# Lightning Deals

Source: https://env.7xmtools.com/api-docs/lightning-deals.html

Access current Amazon Lightning Deals — request a single deal by ASIN or the complete list of lightning deals from the past four days, optionally filtered by deal state.

GET · 1 token per ASIN · 500 tokens for the full list

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](https://env.7xmtools.com/api-docs/deals.html) request.

## Endpoint

```
GET https://api.keepa.com/lightningdeal?key=<yourAccessKey>&domain=<domainId>&asin=<ASIN>
```

## 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](https://env.7xmtools.com/api-docs/lightning-deal-object.html) 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.

**Java**

```java
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**

```php
<?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);
}
```

**Python**

```python
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"])
```

**Node.js**

```javascript
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**

```bash
curl -s "https://api.keepa.com/lightningdeal?key=YOUR_API_KEY&domain=1&asin=B00M0QVG3W"
```

### Example response

```json
{
  "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](https://env.7xmtools.com/api-docs/lightning-deal-object.html) 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.

**Java**

```java
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**

```php
<?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";
}
```

**Python**

```python
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"])
```

**Node.js**

```javascript
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**

```bash
curl -s "https://api.keepa.com/lightningdeal?key=YOUR_API_KEY&domain=3&state=AVAILABLE"
```
