# 7-Eleven Store & Delivery Scraper🇺🇸 (`mrdoe/seven-eleven-scraper`) Actor

Scrape 7-Eleven USA stores, locations, products, prices, delivery data, reviews, and ratings. Get structured data on every 7-Eleven (Seven Eleven) location for market research, price monitoring, lead generation, and location intelligence.

- **URL**: https://apify.com/mrdoe/seven-eleven-scraper.md
- **Developed by:** [MrDoe](https://apify.com/mrdoe) (community)
- **Categories:** E-commerce, Automation, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

$1.00 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

**Extract 7-Eleven store locations and live 7NOW delivery pricing as clean, structured data** - no coding, no manual copy-pasting. Get **store addresses, hours, phone numbers, and amenities** nationwide, plus optional **real per-store delivery product prices**, in minutes.

### What does 7-Eleven Store & Delivery Scraper do?

7-Eleven Store & Delivery Scraper collects **store location data** from [7-eleven.com](https://www.7-eleven.com) - **street address, hours, phone number, and amenities** (ATM, propane, lottery, EBT, Amazon Locker, and more) for any US store. Point it at specific store URLs, or filter by state, city, or ZIP to pull matching stores automatically from 7-Eleven's full store directory. Turn on the delivery add-on and it also captures each store's live [7NOW](https://www.7now.com) **delivery catalog** - real **product names, prices, sale prices, and stock status**, exactly as a customer ordering delivery would see them.

Run it on-demand, on a schedule, or trigger it via the Apify API - all with automatic proxy rotation and full run monitoring built in.

### Why use 7-Eleven Store & Delivery Scraper?

- **Site-selection and market research** - see exactly where 7-Eleven operates, down to amenities like fuel, EV charging support, or lottery, for franchise and competitive-location analysis.
- **Delivery price monitoring** - track 7NOW pricing over time, including promotional/bulk deals, by store or by market.
- **Lead generation and mapping** - build a clean, structured dataset of every store matching your filters for CRM, GIS, or spreadsheet use.
- **Data enrichment** - pull structured store and product data into your own database or price-comparison tool.

### How to use 7-Eleven Store & Delivery Scraper

1. Go to the **Input** tab.
2. Either paste specific **Store URLs** (copied from 7-eleven.com's store locator), or leave that empty and set a **Location filter** (e.g. `Dallas, TX` or `AZ`) to pull matching stores automatically.
3. Set **Max stores** to control how many to scrape.
4. **Include 7NOW delivery catalog** is on by default, so live delivery pricing is captured for each store (this is slower and costs more - it requires a full browser session per store). Turn it off if you only want store location data.
5. Click **Start** and wait for the run to finish.
6. Open the **Dataset** tab to preview, filter, and export your results - the **Delivery products** and **Stores** views separate the two record types.

### Input

| Field                    | Type    | Description                                                                                                                                                                                          |
| ------------------------ | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `storeUrls`              | Array   | Specific 7-Eleven store page URLs to scrape.                                                                                                                                                         |
| `locationQuery`          | String  | Filters 7-Eleven's full US store list by state, city, or street text. Only used when `storeUrls` is empty.                                                                                           |
| `maxStores`              | Integer | Maximum number of stores to scrape (default: 20).                                                                                                                                                    |
| `includeDeliveryCatalog` | Boolean | Also fetch each store's live 7NOW delivery catalog (default: true). Turn off for store data only.                                                                                                    |
| `deliveryCategoryFilter` | Array   | Delivery category names to include, e.g. `Snacks`, `Candy`. Leave empty for every category a store offers.                                                                                           |
| `maxProductsPerStore`    | Integer | Caps delivery products saved per store (default: 0 = unlimited).                                                                                                                                     |
| `proxyConfiguration`     | Object  | Proxy for store pages. Defaults to Residential - required, not just recommended (see Pricing below). The delivery catalog stage always uses Residential proxy internally regardless of this setting. |

Example input:

```json
{
    "locationQuery": "Dallas, TX",
    "maxStores": 10,
    "deliveryCategoryFilter": ["Snacks", "Candy"]
}
```

### Output

**Include 7NOW delivery catalog** is on by default, so each delivery item is saved as one dataset item, linked back to its store by `storeId`:

```json
{
    "productUrl": "https://www.7now.com/product/171164-0-1/beef-mini-tacos",
    "sku": "171164-0-1",
    "name": "Beef Mini Tacos",
    "price": 3.0,
    "image": "https://deuktbth81ifn.cloudfront.net/7now/US/171164-0-1/p1olcfn7gu8waiw3phkk.jpg",
    "sizeOrCalories": "8pc",
    "badge": "8pc for $3",
    "inStock": true,
    "originalPrice": 3.52,
    "currency": "USD",
    "slug": "beef-mini-tacos",
    "storeId": "17312",
    "type": "product",
    "scrapedAt": "2026-08-14"
}
```

Every store is also saved as one dataset item:

```json
{
    "type": "store",
    "storeId": "17312",
    "storeUrl": "https://www.7-eleven.com/locations/az/casa-grande/1592-n-casa-grande-ave-17312",
    "street": "1592 N. Casa Grande Ave",
    "city": "Casa Grande",
    "state": "AZ",
    "zip": "85122",
    "hours": "Open 24/7",
    "isOpen24Hours": true,
    "phone": "(520) 836-1870",
    "amenities": [
        "Mobile Checkout",
        "ATM",
        "Beer",
        "Liquor",
        "Lottery",
        "Propane",
        "EBT Accepted",
        "Wine",
        "Amazon Locker",
        "Delivery"
    ],
    "scrapedAt": "2026-08-14"
}
```

You can download the dataset in various formats such as JSON, HTML, CSV, or Excel.

#### Data table

| Field                                | Description                                                                                               |
| ------------------------------------ | --------------------------------------------------------------------------------------------------------- |
| `productUrl`, `sku`, `slug`          | 7NOW's product identifiers and its own page.                                                              |
| `name`, `image`, `sizeOrCalories`    | Product identification.                                                                                   |
| `price`, `originalPrice`, `currency` | Current price, the struck-through list price if the item is on sale, and price currency (always `"USD"`). |
| `badge`                              | Any promo badge 7NOW shows (e.g. "2 for $3.50", "Out of Stock", "$1 with Gold Pass").                     |
| `inStock`                            | `false` when the badge reads "Out of Stock."                                                              |
| `storeId`                            | 7-Eleven's store number - links a product back to its store, and identifies a store record.               |
| `type`                               | `"product"` or `"store"` - the two record shapes share one dataset.                                       |
| `scrapedAt`                          | Date (`YYYY-MM-DD`) this Actor captured the item.                                                         |
| `street`, `city`, `state`, `zip`     | Store address.                                                                                            |
| `hours`, `isOpen24Hours`, `phone`    | Store hours and contact info.                                                                             |
| `amenities`                          | Everything listed under the store's "Store Features," e.g. ATM, Propane, EBT Accepted.                    |
| `storeUrl`                           | The store's own page on 7-eleven.com.                                                                     |

### Pricing / Cost estimation

How much does it cost to scrape 7-Eleven? Both stages need Residential proxy, so this isn't as cheap as a plain HTTP scraper: store detail pages depend on Google Maps' JS widget to render their content, and that widget is unreliable over datacenter IPs (confirmed live - the same page either took 50+ seconds to load or never finished initializing). **Include 7NOW delivery catalog** (on by default) adds more cost still: 7now.com is protected by an Incapsula WAF that blocks every non-Residential IP outright, so each store's delivery catalog needs its own Residential-proxied browser session (address entry + one page load per category). Keep **Max stores** and **Max products per store** modest when testing, or turn **Include 7NOW delivery catalog** off for store data only.

### Tips for better runs

- Copy store URLs directly from 7-eleven.com's store locator for the most reliable results.
- Use **Location filter** with a state code (e.g. `TX`) or `City, ST` for broad, predictable coverage without listing individual stores.
- Delivery category names in `deliveryCategoryFilter` match against whatever categories that specific store actually shows (e.g. not every store offers Beer & Seltzer), so leave it empty first to see what's available.
- Use the Apify **Schedule** feature to re-run this Actor periodically and track amenity or price changes over time.

### FAQ

**Is this legal?** This Actor only collects publicly visible store and pricing data. You are responsible for using the data in accordance with 7-Eleven's Terms of Service and any applicable laws in your jurisdiction.

**Why is `originalPrice` empty for most products?** It's only set when 7NOW shows a struck-through list price alongside a sale price. Bulk/combo deals (e.g. "5pc for $5") show only the regular price plus a `badge` describing the deal.

**Is there a field for when a product's price last changed?** No - 7NOW's own pages don't expose that anywhere, so this Actor can't report it. `scrapedAt` tells you when *this run* captured the price, which is the closest freshness signal available; re-running the Actor on a **Schedule** is the way to track price changes over time yourself.

**Found a bug or have a feature request?** Please use the Issues tab on this Actor's page - feedback directly shapes future updates.

# Actor input Schema

## `storeUrls` (type: `array`):

Specific 7-Eleven store page URLs to scrape, e.g. <code>https://www.7-eleven.com/locations/az/casa-grande/1592-n-casa-grande-ave-17312</code>. Copy these straight from the site's store locator. Leave empty to discover stores automatically instead (see <b>Location filter</b> below).

## `locationQuery` (type: `string`):

Only used when <b>Store URLs</b> is empty. Filters 7-Eleven's full US store list (pulled from their sitemap) by state code, city, or street text, e.g. <code>Dallas, TX</code> or just <code>AZ</code>. Leave empty to pull from all states nationwide (capped by Max stores).

## `maxStores` (type: `integer`):

Maximum number of stores to scrape in this run. There are roughly 3,500 US stores in total, so keep this modest for testing.

## `includeDeliveryCatalog` (type: `boolean`):

For each scraped store, also fetch its live 7NOW delivery product catalog (name, price, size, stock status). On by default. This is much slower and more expensive than store data alone - it requires a full browser session with Residential proxy per store, regardless of the Proxy configuration set below. Turn it off to scrape store location data only.

## `deliveryCategoryFilter` (type: `array`):

Only used when <b>Include 7NOW delivery catalog</b> is on. Category names to crawl (matched case-insensitively against the category names 7NOW shows for that store, e.g. Snacks, Drinks, Candy). Leave empty to crawl every category 7NOW shows for that store.

## `maxProductsPerStore` (type: `integer`):

Only used when <b>Include 7NOW delivery catalog</b> is on. Caps how many delivery products are saved per store. Default is 0 (unlimited - every product in every category the store offers).

## `proxyConfiguration` (type: `object`):

Proxy used for scraping store location pages. Residential is recommended: store pages depend on Google Maps' JS widget to render their content, and that widget is unreliable (slow or silently stuck) over Apify's datacenter IPs - verified live. The separate 7NOW delivery catalog stage always uses Residential proxy internally, regardless of this setting.

## Actor input object example

```json
{
  "storeUrls": [
    "https://www.7-eleven.com/locations/az/casa-grande/1592-n-casa-grande-ave-17312"
  ],
  "locationQuery": "",
  "maxStores": 20,
  "includeDeliveryCatalog": true,
  "deliveryCategoryFilter": [],
  "maxProductsPerStore": 0,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "storeUrls": [
        "https://www.7-eleven.com/locations/az/casa-grande/1592-n-casa-grande-ave-17312"
    ],
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("mrdoe/seven-eleven-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "storeUrls": ["https://www.7-eleven.com/locations/az/casa-grande/1592-n-casa-grande-ave-17312"],
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("mrdoe/seven-eleven-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "storeUrls": [
    "https://www.7-eleven.com/locations/az/casa-grande/1592-n-casa-grande-ave-17312"
  ],
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call mrdoe/seven-eleven-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,mrdoe/seven-eleven-scraper"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/sK73U4OX8EMRvWAgM/builds/fGqUUtim9CKGRb8QS/openapi.json
