# Instagram Reel Places Extractor (`rainminer/instagram-reel-places-extractor`) Actor

Extract named restaurants, cafés, hotels, beaches, and attractions from public Instagram Reels. AI watches travel and food Reels for on-screen text, speech, and captions. Returns places with city, country, timestamps, Google Maps links, and optional place IDs.

- **URL**: https://apify.com/rainminer/instagram-reel-places-extractor.md
- **Developed by:** [rainminer](https://apify.com/rainminer) (community)
- **Categories:** Travel, Social media, AI
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $6.00 / 1,000 video analyzeds

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/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

### What does Instagram Reel Places Extractor do?

**Instagram Reel Places Extractor** turns public [Instagram Reels](https://www.instagram.com/) travel and food videos into a **structured list of named places**: restaurants, cafés, bars, hotels, beaches, viewpoints, museums, shops, and other spots the creator recommends.

Paste Reel links and press **Start**. The Actor watches each video with AI—not just the location tag—and reads on-screen text, spoken narration, and the caption to find every **real venue name** with city, country, category, and when it first appears in the video. Each place gets a Google Maps search link; optionally enable **Resolve places on Google Maps** to attach place IDs, coordinates, ratings, and direct Maps URLs via Outscraper.

Use it as an **Instagram Reel places API**: export JSON or CSV, schedule runs on Apify, or pipe results into trip planners and maps tools.

### Why extract places from Instagram Reels?

Travel creators pack venue names into Reels, but that list is locked inside the clip. Typical uses:

- 🗺️ **Trip planning apps**: turn a “best spots in Barcelona” Reel into a saved map
- 🍽️ **Restaurant discovery**: build lists from foodie creators without manual note-taking
- 📍 **Maps enrichment**: combine extracted names with [Google Maps Place Reviews Scraper](https://apify.com/rainminer/google-maps-place-reviews-scraper) for ratings and menus
- 🏨 **Hospitality research**: see which hotels and neighborhoods creators promote
- 📊 **Trend research**: track which venues appear in viral travel Reels
- 🤖 **AI travel agents**: give an assistant structured place rows instead of a video URL

### What place data can you extract?

| Field | Example |
| --- | --- |
| Place name | Tickets Bar |
| Category | restaurant, cafe, beach, hotel, … |
| City / region / country | Barcelona, Spain |
| First shown | `15` seconds into the Reel |
| Evidence | on\_screen\_text, spoken, caption, location\_tag |
| Destination | Barcelona (overall trip focus) |
| Google Maps search | link built from name + city |
| Optional resolution | place ID, Maps URL, rating, reviews count |
| Video context | author handle, caption, thumbnail, duration |

Reels with no named venues return `placeCount: 0` with a destination when the city is clear.

### How to extract places from an Instagram Reel

1. Open the Actor and click **Try for free**.
2. Paste one or more **Instagram Reel** links into **Video URLs**.
3. Keep **Apify Proxy** enabled (required for Reel downloads).
4. Optional: turn on **Resolve places on Google Maps** (needs Outscraper key on the Actor).
5. Click **Start**. Each Reel usually takes about 30–90 seconds.
6. Open **Overview** for one row per Reel, or **Places** for one row per venue.

### How much does it cost to extract places from Instagram Reels?

You pay **per Reel analyzed** plus **per second of video length** (rounded up), because longer clips need more AI processing. There is no separate charge for how many places are found in a Reel. Exact prices are on the **Pricing** tab and drop on higher Apify plans.

On the free plan that works out to roughly:

| Video length | Price |
| --- | --- |
| 30 seconds | about $0.014 |
| 1 minute | about $0.020 |
| 3 minutes | about $0.044 |

- Failed downloads (deleted or private Reels) are **not charged**.
- Reels with zero named places are still charged for analysis (the video was processed).
- **Resolve places on Google Maps** adds a per-place lookup fee when enabled and a match is attempted (not charged on Outscraper auth or billing errors).
- Apify’s free plan includes monthly credit for many short Reels.

### Input

Click the **Input** tab for all options. A minimal input:

```json
{
  "videoUrls": [
    "https://www.instagram.com/reel/DV1I_w-sHc2/",
    "https://www.instagram.com/reel/C4MLzpFLL8s/"
  ],
  "maxItems": 5,
  "resolvePlaces": false,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

| Field | What it does |
| --- | --- |
| `videoUrls` | Instagram Reel links. Other links are skipped with a warning. |
| `maxItems` | Maximum number of Reels per run. |
| `resolvePlaces` | Look up each place on Google Maps via Outscraper (optional). |
| `proxyConfiguration` | Apify Proxy on by default; required for downloads. |

### Output example

One dataset row per Reel:

```json
{
  "videoUrl": "https://www.instagram.com/reel/DV1I_w-sHc2/",
  "videoId": "DV1I_w-sHc2",
  "authorHandle": "@travelcreator",
  "imageUrl": "https://…",
  "durationSeconds": 38.2,
  "language": "en",
  "locationTag": null,
  "destination": "Lisbon",
  "placeCount": 2,
  "places": [
    {
      "name": "Time Out Market Lisboa",
      "category": "market",
      "city": "Lisbon",
      "country": "Portugal",
      "firstShownSec": 5,
      "evidence": "spoken",
      "confidence": "high",
      "googleMapsSearchUrl": "https://www.google.com/maps/search/?api=1&query=…"
    }
  ],
  "summary": "Two food markets and cafés in Lisbon.",
  "error": null
}
```

### Tips for better results

- **Listicle Reels** (“5 spots in …”) work best; pure scenery without names may return zero places.
- **Keep proxy enabled**; Instagram Reels rarely download without Apify Proxy.
- **Enable resolvePlaces** when you need coordinates and ratings, not just names.

### Other rainminer Actors for short-form video

- [TikTok Places Extractor](https://apify.com/rainminer/tiktok-places-extractor): the same place extraction for TikTok videos
- [Instagram Reel Recipe Extractor](https://apify.com/rainminer/instagram-reel-recipe-extractor): structured recipes from cooking Reels
- [Google Maps Place Reviews Scraper](https://apify.com/rainminer/google-maps-place-reviews-scraper): reviews and ratings for places you already have on Maps
- [Google Maps Menu Scraper](https://apify.com/rainminer/google-maps-menu-scraper): menus and prices from Google Maps photos

### FAQ

#### Does it only use the Instagram location tag?

No. The Actor watches the full Reel and uses on-screen text, speech, and the caption. Many travel Reels never set a location tag but still name venues.

#### Do I need an Instagram account?

No. The Actor only reads public Reels and never logs in.

#### Is it legal to extract places from Instagram Reels?

The Actor processes publicly available Reels and does not collect private account data. Respect creators’ rights and Instagram’s terms when you republish or commercialize results. If you are unsure about your use case, consult a lawyer.

#### Something looks wrong?

Open an issue on the **Issues** tab with the Reel link. Feedback goes into the next version.

# Actor input Schema

## `videoUrls` (type: `array`):

Public Instagram Reel URLs to analyze for named restaurants, cafés, hotels, beaches, and other visitable places. Other links are skipped with a warning.

## `resolvePlaces` (type: `boolean`):

When enabled, look up each extracted place on Google Maps via Outscraper and attach place IDs, coordinates, ratings, and Maps URLs. Requires OUTSCRAPER\_API\_KEY on the Actor.

## `maxItems` (type: `integer`):

Maximum number of videos to process in a single run.

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

Instagram blocks many datacenter IPs, so Apify Proxy is on by default. Reel downloads require a working proxy.

## Actor input object example

```json
{
  "videoUrls": [
    "https://www.instagram.com/reel/DV1I_w-sHc2/",
    "https://www.instagram.com/reel/C4MLzpFLL8s/",
    "https://www.instagram.com/reel/DZIGQXjI76L/"
  ],
  "resolvePlaces": false,
  "maxItems": 5,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `overview` (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 = {
    "videoUrls": [
        "https://www.instagram.com/reel/DV1I_w-sHc2/",
        "https://www.instagram.com/reel/C4MLzpFLL8s/",
        "https://www.instagram.com/reel/DZIGQXjI76L/"
    ],
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("rainminer/instagram-reel-places-extractor").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 = {
    "videoUrls": [
        "https://www.instagram.com/reel/DV1I_w-sHc2/",
        "https://www.instagram.com/reel/C4MLzpFLL8s/",
        "https://www.instagram.com/reel/DZIGQXjI76L/",
    ],
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("rainminer/instagram-reel-places-extractor").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 '{
  "videoUrls": [
    "https://www.instagram.com/reel/DV1I_w-sHc2/",
    "https://www.instagram.com/reel/C4MLzpFLL8s/",
    "https://www.instagram.com/reel/DZIGQXjI76L/"
  ],
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call rainminer/instagram-reel-places-extractor --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,rainminer/instagram-reel-places-extractor"
        }
    }
}
```

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/zqZR2Rcf7OMvONzQX/builds/0yUNlGjx2lAXi3uhm/openapi.json
