# Raising Cane's Store Locator Link Scraper (`datacach/raising-canes-store-locator-scraper`) Actor

Scrape Raising Cane's store locator to collect every US restaurant page URL by state and city. Fast, no-code data export to JSON, CSV, or Excel.

- **URL**: https://apify.com/datacach/raising-canes-store-locator-scraper.md
- **Developed by:** [DataCach](https://apify.com/datacach) (community)
- **Categories:** Automation, Developer tools, E-commerce
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.50 / 1,000 links

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js/docs.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/integrations/mcp.md).

If your project is in a different language, use 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

## Raising Cane's Store Locator Link Scraper

**Extract every Raising Cane's restaurant location link** in the US in a single click — no code, no browser, no manual copy-pasting. This Actor turns the official Raising Cane's store locator into a clean, downloadable dataset of restaurant page links, ready for JSON, CSV, or Excel export, or for feeding straight into another tool via the Apify API.

### What is Raising Cane's Store Locator Link Scraper?

Raising Cane's Store Locator Link Scraper is an Apify Actor that collects the **restaurant location page link** for every US Raising Cane's location listed in the chain's official, publicly available store locator data. Each result is a **direct, unique URL** pointing to that restaurant's own location page — the building block you need before pulling addresses, phone numbers, hours, or geolocation for each store. It requires **no input at all** to run: just click Start and let it collect links, or optionally cap the number of results, skip a starting range, or exclude links you already have.

### What can Raising Cane's Store Locator Link Scraper do?

- 🔗 **Collect restaurant location links** for Raising Cane's stores across the United States, deduplicated automatically.
- 🎛️ **Cap results** with a simple maximum-links input, or leave it uncapped to collect everything available.
- ⏭️ **Resume and paginate across runs** using a start index or an exclude list, so repeat runs don't re-download links you already have.
- 📤 **Export to JSON, CSV, Excel, HTML, or XML** directly from the Apify platform, no extra tooling required.
- ⏰ **Schedule recurring runs** on the Apify platform to keep a fresh, up-to-date list of restaurant links over time.
- 🔌 **Access results via the Apify API** to plug this data straight into your own app, spreadsheet, or pipeline.
- 🔗 **Integrate with Zapier, Make, and other automation tools** so new links trigger downstream workflows automatically.
- 🌐 **Built-in proxy rotation** on the Apify platform to keep runs reliable at scale.
- 📊 **Monitor every run** from the Apify Console, with logs and run history for troubleshooting.

### What data does Raising Cane's Store Locator Link Scraper extract?

Each dataset item represents one Raising Cane's restaurant link, with metadata about when and how it was found:

| Field | Description | Example |
|---|---|---|
| `url` | Direct link to the restaurant's location page | `https://locations.raisingcanes.com/al/tuscaloosa/1241-mcfarland-blvd-e` |
| `coordinate` | Label identifying which source/search point surfaced this link | `static source` |
| `extraction_datetime` | UTC timestamp (ISO 8601) when the link was extracted | `2026-07-21T14:30:00.123456+00:00` |
| `extraction_date` | Extraction date in `mm-dd-yyyy` format | `07-21-2026` |

This link dataset pairs well with [Raising Cane's Store Details Scraper](https://apify.com/datacach/raising-canes-store-details-scraper), a companion Actor that visits each link and pulls full restaurant details (address, phone number, hours, and geolocation).

### How do I use this Raising Cane's restaurant location scraper?

Getting a full list of Raising Cane's restaurant links takes just a few steps:

1. Open the Actor's **Input** tab in Apify Console.
2. Leave every field at its default to collect all available links, or set **Max restaurant links** to cap how many you collect.
3. Optionally set **Start index** or **Exclude URLs** if you're pulling links incrementally across multiple runs and want to avoid paying for links you already have.
4. Click **Start** and watch the run progress live in the **Log** tab.
5. Once finished, open the **Output** or **Dataset** tab and export your results as JSON, CSV, Excel, HTML, or XML — or pull them programmatically via the Apify API.

<!-- TODO: embed a demo GIF or YouTube video walking through Input -> Start -> Output -->

### Input

The Actor needs **no input to run** — click Start and it collects links using sensible defaults. All fields are optional:

- **Max restaurant links** (`maxResults`) — the maximum number of unique restaurant links to collect this run. Leave at `0` to collect every available link with no limit.
- **Start index** (`startIndex`) — skip this many links from the beginning before saving any, useful for paginating across multiple runs without re-collecting links you already have.
- **Exclude URLs** (`excludeUrls`) — a list of restaurant link URLs you already have; any URL in this list is never saved again, regardless of collection order.

Free-plan runs are capped to a small number of links per run, with the start-index and exclude-list fields correspondingly limited — upgrade to a paid plan to remove these caps.

<!-- TODO: screenshot of the Input tab form -->

### Output example

Every item pushed to the dataset looks like this:

```json
{
    "url": "https://locations.raisingcanes.com/al/tuscaloosa/1241-mcfarland-blvd-e",
    "coordinate": "static source",
    "extraction_datetime": "2026-07-21T14:30:00.123456+00:00",
    "extraction_date": "07-21-2026"
}
````

You can download the dataset in various formats such as JSON, HTML, CSV, or Excel, or fetch it directly through the Apify API for use in another application.

### Use cases

- **Building a Raising Cane's restaurant directory** for a location-finder app or website.
- **Feeding a downstream metadata scraper** that needs a starting list of restaurant links before it can pull addresses, hours, and phone numbers.
- **Market research and expansion tracking** — monitor how many Raising Cane's locations exist and where new links appear over time by scheduling recurring runs.
- **Data enrichment pipelines** that join restaurant link data with other datasets (demographics, foot traffic, competitor locations).
- **QA and monitoring** for teams who need a lightweight, always-current list of live restaurant location URLs.

### Raising Cane's-related Actors

Looking for more than just links? Pair this Actor with the companion Actor below, which visits each link and extracts full restaurant details — address, phone number, hours, and geolocation.

| Actor | What it does |
|---|---|
| [Raising Cane's Store Details Scraper](https://apify.com/datacach/raising-canes-store-details-scraper) | Takes Raising Cane's location URLs and extracts full store details: address, phone number, opening hours, and geolocation. |

### FAQ

#### Is it legal to scrape Raising Cane's restaurant location data?

This Actor only collects **publicly available** restaurant location links — the same information anyone can browse without logging in. Scraping publicly accessible data is generally permissible, but you're responsible for reviewing the target site's terms of service and applicable laws before using this data, especially for commercial purposes. This Actor does not collect any personal or private data.

#### Does this Actor require any input to start?

No. Every input field is optional. Click **Start** with the default input and the Actor will begin collecting restaurant links immediately.

#### Can I get only new links since my last run?

Yes. Use **Start index** to skip a known number of already-collected links, or **Exclude URLs** to list specific links you already have. Both help you avoid re-collecting (and re-paying for, under pay-per-result pricing) links you already own.

#### Can I access the results via API?

Yes. Every Apify Actor run — including this one — exposes its dataset through the Apify API, so you can integrate results into your own application, script, or automation tool such as Zapier or Make.

#### What happens if a run is interrupted?

The Actor checkpoints its progress as it runs. If a run is migrated or restarted mid-crawl, it resumes from where it left off instead of re-collecting links it already pushed.

### Support

Found a bug or have a feature request? Open an issue in the Actor's **Issues** tab in Apify Console and the maintainer will follow up. Need a custom scraper or a tailored data pipeline built around this data? Reach out through the Actor's contact details on its Apify Store page.

# Actor input Schema

## `maxResults` (type: `integer`):

Maximum number of unique restaurant links to collect in this run. Set to <b>0</b> to collect every link with no limit. Links are discovered by crawling the state and city pages of the public Raising Cane's location directory, so no coordinates are needed. <b>Free plan runs are capped at 10 links</b> regardless of this value.

## `startIndex` (type: `integer`):

Skip this many links from the <b>start</b> before saving any. Use it to paginate across runs: if you already have the first 500 links, set <b>500</b> to begin from link 501 and avoid paying for links you already have. Links are discovered in the fixed state/city crawl order, so index N is reproducible between runs. The Actor still crawls up to that point, so a large value does not make the run faster — it only changes which links are saved. Combined with <b>Max restaurant links</b>, the saved range is \[startIndex, startIndex + maxResults). <b>Ignored on the free plan</b> (always treated as 0).

## `excludeUrls` (type: `array`):

Restaurant link URLs you already have, e.g. <code>https://locations.raisingcanes.com/al/birmingham/5301-hwy-280</code>. Any URL listed here is <b>never saved again</b>, regardless of crawl order. Unlike <b>Start index</b>, this is order-independent — ideal when you keep a running list and only want new links. Applied after Start index. <b>Free plan runs may list at most 1 URL here</b> — extra URLs are ignored.

## Actor input object example

```json
{
  "maxResults": 0,
  "startIndex": 0,
  "excludeUrls": [
    "https://locations.raisingcanes.com/al/birmingham/5301-hwy-280"
  ]
}
```

# Actor output Schema

## `dataset` (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 = {
    "excludeUrls": [
        "https://locations.raisingcanes.com/al/birmingham/5301-hwy-280"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("datacach/raising-canes-store-locator-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 = { "excludeUrls": ["https://locations.raisingcanes.com/al/birmingham/5301-hwy-280"] }

# Run the Actor and wait for it to finish
run = client.actor("datacach/raising-canes-store-locator-scraper").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "excludeUrls": [
    "https://locations.raisingcanes.com/al/birmingham/5301-hwy-280"
  ]
}' |
apify call datacach/raising-canes-store-locator-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=datacach/raising-canes-store-locator-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Raising Cane's Store Locator Link Scraper",
        "description": "Scrape Raising Cane's store locator to collect every US restaurant page URL by state and city. Fast, no-code data export to JSON, CSV, or Excel.",
        "version": "0.0",
        "x-build-id": "1KKpQ1VP71nTAglJW"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/datacach~raising-canes-store-locator-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-datacach-raising-canes-store-locator-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/datacach~raising-canes-store-locator-scraper/runs": {
            "post": {
                "operationId": "runs-sync-datacach-raising-canes-store-locator-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/datacach~raising-canes-store-locator-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-datacach-raising-canes-store-locator-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "maxResults": {
                        "title": "Max restaurant links",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Maximum number of unique restaurant links to collect in this run. Set to <b>0</b> to collect every link with no limit. Links are discovered by crawling the state and city pages of the public Raising Cane's location directory, so no coordinates are needed. <b>Free plan runs are capped at 10 links</b> regardless of this value.",
                        "default": 0
                    },
                    "startIndex": {
                        "title": "Start index",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Skip this many links from the <b>start</b> before saving any. Use it to paginate across runs: if you already have the first 500 links, set <b>500</b> to begin from link 501 and avoid paying for links you already have. Links are discovered in the fixed state/city crawl order, so index N is reproducible between runs. The Actor still crawls up to that point, so a large value does not make the run faster — it only changes which links are saved. Combined with <b>Max restaurant links</b>, the saved range is [startIndex, startIndex + maxResults). <b>Ignored on the free plan</b> (always treated as 0).",
                        "default": 0
                    },
                    "excludeUrls": {
                        "title": "Exclude URLs",
                        "type": "array",
                        "description": "Restaurant link URLs you already have, e.g. <code>https://locations.raisingcanes.com/al/birmingham/5301-hwy-280</code>. Any URL listed here is <b>never saved again</b>, regardless of crawl order. Unlike <b>Start index</b>, this is order-independent — ideal when you keep a running list and only want new links. Applied after Start index. <b>Free plan runs may list at most 1 URL here</b> — extra URLs are ignored.",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
