# Social Media Trending Scraper (`arceus15/social-media-trending-restaurant-scraper`) Actor

Discover what’s actually trending right now. Trending Places & Spots Scraper monitors real-time social buzz on Instagram and Facebook, search interest spikes on Google Trends, and physical place data from OpenStreetMap and Google Maps.

- **URL**: https://apify.com/arceus15/social-media-trending-restaurant-scraper.md
- **Developed by:** [Rajas Samarth](https://apify.com/arceus15) (community)
- **Security:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $5.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/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 is Trending Places & Spots Scraper?

**Trending Places & Spots Scraper** turns a category and location search into a clean, structured dataset of verified, trending restaurants, cafes, parks, attractions, and event venues you can filter, export, and monitor.

Give it a category (e.g., `restaurants`, `cafes`, `street food`) and a location (e.g., `Nagpur`, `Mumbai`, `Goa`, `Dubai`, `London`), and it returns one row per place with the venue name, trend score, address, rating, review count, Google Maps link, phone number, website, opening hours, coordinates, and social mention context.

It combines live social signals from **Instagram** and **Facebook**, search interest from **Google Trends & Autocomplete**, and community discussions from **Reddit**, with optional physical venue verification from **OpenStreetMap** and **Google Maps**. A built-in NLP engine deduplicates mentions, filters out dish names and generic spam, and ranks real establishments by overall buzz and reliability.

Because it runs on Apify, you also get scheduling, run monitoring, proxy rotation, an API, and integrations with Google Sheets, BigQuery, Make, and Zapier without maintaining a server.

***

### What data can you extract?

| Field | Example | Meaning |
|---|---|---|
| `rank` | `1` | Position in the ranked result list |
| `spot` | `Tandoori Villa` | Verified place or venue name |
| `category` | `restaurants` | Search category |
| `location` | `Nagpur` | City or region where the place is located |
| `trend_score` | `86` | 0–100 composite ranking score (higher = trending more) |
| `mention_count` | `4` | How many times the place appeared across sources |
| `sources` | `["verified_poi", "instagram", "google_trends"]` | Sources that identified or corroborated the venue |
| `source_count` | `3` | Number of distinct sources corroborating the venue |
| `verified` | `true` | Whether a physical map or directory source confirmed the venue |
| `address` | `West High Court Road, Dharampeth, Nagpur` | Street address when available |
| `rating` | `4.2` | Star rating (from Google Maps) when available |
| `review_count` | `669` | Total user reviews (from Google Maps) when available |
| `maps_url` | `https://www.google.com/maps/place/...` | Direct Google Maps link when available |
| `phone` | `+91 98765 43210` | Contact phone number when available |
| `website` | `https://example.com` | Official website when available |
| `opening_hours` | `Mon–Sun: 11:00–23:00` | Operating hours when available |
| `venue_type` | `Restaurant` | Classified category of venue |
| `latitude` / `longitude` | `21.1381` / `79.0558` | Geographic coordinates when available |
| `sample_context` | `Verified venue: Tandoori Villa (Restaurant) located in Nagpur` | Snippet from post, review, or directory entry |
| `extracted_at` | `2026-10-27T10:15:42+00:00` | ISO timestamp of extraction |

Each run also writes:

- **Dataset** — one flat row per venue, ready for CSV, Excel, Google Sheets, BigQuery, or API retrieval.
- **SUMMARY** — run metadata, spot counts, raw record metrics, source breakdown, and pipeline status.
- **OUTPUT** — the full structured results payload and summary stored in the Key-Value Store for download or webhook delivery.

***

### Why use this Actor?

- **Verified places, not directory spam.** Uses OpenStreetMap, Google Maps, and verified directories to confirm that every result is an actual physical establishment, rejecting dish names, generic labels, or directory sites like Zomato, Yelp, or TripAdvisor.
- **Real social trend signals.** Analyzes public Instagram hashtags, reels, and Facebook posts to capture where real people are going and what they are recommending right now.
- **Live search interest.** Pulls real-time Google Trends and search suggestions to detect sudden spikes in consumer interest.
- **Multi-source NLP ranking.** Uses spaCy natural language processing and weighted scoring to reward places that have cross-platform consensus (e.g., an Instagram trend corroborated by an OpenStreetMap physical entry ranks higher than a single unverified social post).
- **Rich contact & location details.** Extracts street addresses, phone numbers, websites, operating hours, ratings, review counts, and exact coordinates whenever available.
- **Excel & CSV ready.** Every run formats results into tabular dataset rows ready for one-click export to `.xlsx`, `.csv`, `.json`, or downstream BI dashboards.
- **Apify Proxy on by default.** Browser traffic is automatically routed through Apify Proxy, preventing rate limits and datacenter IP blocks on social and map platforms.
- **Any category, any city.** Works seamlessly for restaurants, rooftop bars, cafes, street food markets, tourist attractions, public parks, local festivals, garba events, gyms, salons, and more.
- **No account or login required.** Runs out of the box using public search, social signals, and open geospatial data. No Instagram, Facebook, or Google API keys are required.

***

### How to use it

1. Enter a **category** (e.g. `restaurants`, `cafes`, `street food`, `parks`, `garba events`).
2. Enter a **location** (e.g. `Nagpur`, `Mumbai`, `Goa`, `Dubai`, `London`).
3. Select your **sources** (keep the default mix of Instagram, Facebook, and Google Trends, or add Reddit, OpenStreetMap, and Google Maps).
4. Choose your **pipeline** mode (`social` recommended for fast discovery; `google_maps` for browser-scraped ratings and contact details).
5. Set **Maximum places** (e.g. 50 or 100) and click **Start**.
6. Open the **Dataset** tab to view your places, or download them as Excel, CSV, or JSON.
7. For ongoing monitoring, attach an Apify **Schedule** to receive fresh trending spots weekly.

No login, cookies, or API keys are required.

***

### Inputs

| Input | Type | What it does |
|---|---|---|
| `category` | `string` | Type of place to find, e.g. `restaurants`, `cafes`, `parks`, `tourist attractions`, `garba events` |
| `location` | `string` | City, region, or country to search in, e.g. `Nagpur`, `Mumbai`, `Goa`, `Dubai`, `London` |
| `sources` | `array` | Data sources to query: `instagram`, `facebook`, `google`, `venues`, `reddit`, `google_maps`, `overpass` |
| `pipeline` | `enum` | Pipeline mode: `social` (fast, social-first), `optimized`, or `google_maps` (full browser scraping) |
| `max_spots` | `integer` | Maximum number of ranked places to save to the dataset (1–200, default `50`) |
| `proxyConfiguration` | `object` | Apify Proxy settings; Apify Proxy is used by default to prevent rate limits |
| `instagram_cookies` | `string` | Optional Netscape cookies.txt or sessionid cookie for authenticated Reel downloads |

***

### Example inputs

#### Restaurants in Nagpur (Default, Social-First)

```json
{
  "category": "restaurants",
  "location": "Nagpur",
  "sources": ["instagram", "facebook", "google"],
  "pipeline": "social",
  "max_spots": 50
}
```

#### Cafes in Goa with Ratings & Google Maps Contact Details

```json
{
  "category": "cafes",
  "location": "Goa",
  "sources": ["instagram", "facebook", "google", "venues", "google_maps"],
  "pipeline": "google_maps",
  "max_spots": 100
}
```

#### Parks & Nature Spots with Reddit Community Discussions

```json
{
  "category": "parks",
  "location": "Nagpur",
  "sources": ["instagram", "facebook", "google", "reddit"],
  "pipeline": "social",
  "max_spots": 50
}
```

#### Weekly Trend Watch for Tourist Attractions in Dubai

```json
{
  "category": "tourist attractions",
  "location": "Dubai",
  "sources": ["instagram", "facebook", "google"],
  "pipeline": "social",
  "max_spots": 100
}
```

***

### Output

#### Dataset

One row per place, ordered by `trend_score`. Places lacking physical verification are still returned but flagged with `"verified": false`, allowing you to filter them out downstream if desired.

```json
{
  "rank": 1,
  "spot": "Tandoori Villa",
  "category": "restaurants",
  "location": "Nagpur",
  "trend_score": 86,
  "mention_count": 4,
  "sources": ["verified_poi", "instagram", "google_trends"],
  "source_count": 3,
  "verified": true,
  "address": "West High Court Road, Dharampeth, Nagpur",
  "rating": 4.2,
  "review_count": 669,
  "maps_url": "https://www.google.com/maps/place/...",
  "phone": "+91 98765 43210",
  "website": "https://example.com",
  "opening_hours": "Mon–Sun: 11:00–23:00",
  "venue_type": "Restaurant",
  "latitude": 21.1381,
  "longitude": 79.0558,
  "sample_context": "Verified venue: Tandoori Villa (Restaurant) located in Nagpur",
  "extracted_at": "2026-10-27T10:15:42+00:00",
  "search_category": "restaurants",
  "search_location": "Nagpur"
}
```

#### SUMMARY

A compact JSON object saved in the Key-Value Store under `OUTPUT` containing search parameters, source breakdown counts, total raw records processed, and total ranked places found:

```json
{
  "category": "restaurants",
  "location": "Nagpur",
  "sources": ["instagram", "facebook", "google", "venues"],
  "source_counts": {
    "instagram": 18,
    "facebook": 12,
    "google": 24,
    "venues": 35
  },
  "pipeline": "social",
  "total_spots": 50,
  "total_raw_records": 89,
  "scraped_at": "2026-10-27T10:15:42+00:00"
}
```

#### OUTPUT

The full list of ranked spots along with the summary metadata is also saved under the `OUTPUT` key in the default Key-Value Store for simple downstream consumption or download.

***

### How the trend score works

The Actor calculates a composite **trend score (0–100)** for every extracted establishment using the following factors:

- **Source Reliability Weighting** — Verified physical databases (OpenStreetMap, Overpass, Google Maps) receive higher base weights (`0.95`–`1.00`) than raw social mentions (`0.55`) or web search snippets (`0.35`).
- **Cross-Source Corroboration** — When a venue is discovered on social media (e.g. Instagram or Facebook) and confirmed by a physical map database, its score receives a significant consensus multiplier.
- **Search Velocity & Buzz** — Spikes in Google Trends search interest and query autocomplete boost a venue's ranking.
- **Popularity Signals** — High ratings and substantial review counts from Google Maps add an additional popularity lift.
- **Single-Source Noise Penalty** — Unverified, one-off social media mentions are downranked to filter out random noise and personal accounts.

Scores are calculated relative to the specific search query and location. They provide an accurate ranking metric within each run.

***

### Scheduling

You can track rising venues and trending spots over time by creating a scheduled task in the Apify Console (**Actors → Trending Places Scraper → Schedules**).

```json
{
  "category": "cafes",
  "location": "Mumbai",
  "sources": ["instagram", "facebook", "google"],
  "pipeline": "social",
  "max_spots": 50
}
```

Running this Actor weekly or monthly lets you:

- Monitor newly viral cafes, restaurants, or nightspots before they hit mainstream guides.
- Detect seasonal pop-ups, food festivals, and event venues automatically.
- Feed fresh lead lists or recommendation feeds into your CRM, database, or mobile app via webhooks.

***

### How much does it cost?

This Actor is paid per result, with no hidden start fees:

| Event | Price |
|---|---|
| Place result | $5 per 1,000 rows ($0.005 per row) |
| Actor start | $0.00 per run |

A typical 50-place run costs about **$0.25**; a 200-place run costs about **$1.00**. The per-result price includes dataset generation, deduplication, NLP extraction, and Key-Value Store outputs. Apify platform usage is included in the per-event price.

- You are charged only for valid places saved to the dataset.
- A run that returns zero places is charged only minimal platform compute.
- Set `max_spots` to cap the cost of any run.
- Use Apify's **Max charge (USD)** setting to establish a strict budget limit per run.

***

### FAQ

**Do I need a proxy?**\
Apify Proxy is enabled by default and recommended. Social media networks and Google Maps frequently serve rate-limiting challenges or consent screens to datacenter IPs. Residential proxies provide the highest success rate when scraping Instagram reels or Google Maps.

**Why did I get zero places?**\
The most common causes are an IP block on social platforms, an overly narrow category, or a location with minimal public social posts. Check the run log to view how many raw records each source returned. Broadening your category or location often resolves this.

**Can I get phone numbers, websites, and opening hours?**\
Yes. OpenStreetMap provides addresses and coordinates; including `google_maps` in your sources adds star ratings, review counts, phone numbers, websites, and opening hours where available.

**How does it prevent food dishes or queries from appearing as places?**\
The Actor uses a multi-layer filtering engine: pattern matching, blacklists of generic dish names (e.g. "mutton biryani", "cold coffee"), platform exclusions (e.g. "TripAdvisor", "Zomato"), and spaCy NER validation to ensure only legitimate venues and establishments are output.

**Can I export data directly to Excel or Google Sheets?**\
Yes. Every dataset row has a flat, tabular schema. In the Apify Console, navigate to the **Dataset** tab and click **Export** to download your data as an Excel (`.xlsx`), CSV, or JSON file, or connect it directly to Google Sheets via the Apify Google Sheets integration.

**Can I call it from Python, JavaScript, or an automation tool?**\
Yes. Every Apify Actor provides a built-in REST API and official client libraries for Python (`apify-client`) and JavaScript/Node.js (`apify-client`). You can also trigger runs and receive dataset webhooks in Make, n8n, Zapier, or via the Apify MCP server for AI agents.

**Does it require Instagram or Facebook login credentials?**\
No. The scraper queries public hashtags, directories, and search indexes. Cookies are strictly optional and only needed if you wish to download authenticated Instagram Reel media.

**Is this an official Meta or Google API?**\
No. It reads publicly available web and geospatial data. It is not affiliated with, endorsed by, or sponsored by Meta Platforms, Google LLC, or OpenStreetMap.

**Is scraping social media and public maps legal?**\
Yes, collecting publicly accessible web data for market research, travel intelligence, and business analytics is recognized as legitimate in many jurisdictions. However, you are responsible for adhering to applicable data privacy laws (e.g., GDPR, CCPA) and platform terms of service. Do not use the Actor to harvest private personal data or overload external infrastructure.

**Does it book reservations or event tickets?**\
No. It is a research and data extraction tool. Booking tables, purchasing tickets, and processing payments are outside its scope.

**Why is it slower than a pure-HTTP scraper?**\
It uses Playwright headless browsers to render live JavaScript content, hashtags, and dynamic feeds on Instagram, Facebook, and Google Maps just like a real user. This ensures maximum data extraction accuracy at the cost of slight browser rendering overhead.

***

### Limitations

- **Browser-based scraping** — Rendering dynamic social feeds requires browser resources and takes longer than simple HTTP requests.
- **Platform UI shifts** — Instagram and Facebook frequently update page layouts; while self-healing selectors and fallbacks are implemented, major platform redesigns may require Actor maintenance.
- **Data completeness** — Not every venue has a public phone number, website, or listed operating hours; unavailable fields are returned empty.
- **Dynamic trends** — Social buzz changes rapidly; results represent a snapshot of current and recent signals at the time of the scrape.
- **Rate limits** — Intense querying without proxies on social sources may trigger temporary rate limiting.

***

### Support

Found a bug, have a feature request, or need an additional data field?
Open an issue on the Actor's **Issues** tab in the Apify Console and provide:

- Your input JSON configuration (with any credentials omitted),
- The run ID from the Apify Console,
- A description of what you expected versus what was returned.

***

### Disclaimer

This Actor accesses publicly available place and social-media data for legitimate research, market intelligence, and business analysis purposes. It is not affiliated with, endorsed by, or sponsored by Meta Platforms, Inc., Google LLC, or the OpenStreetMap Foundation. Users are responsible for complying with each platform's terms of service and applicable data protection regulations. The author and publisher assume no liability for misuse. Verify critical venue details prior to making travel or commercial commitments.

***

### Keywords

Trending places scraper, restaurant scraper, cafe scraper, place finder, trending spots, location data scraper, Instagram hashtag scraper, Facebook places scraper, Google Trends scraper, OpenStreetMap scraper, venue data API, restaurant data API, cafe data API, park scraper, tourist attraction scraper, event venue scraper, garba events scraper, place trend score, place ranking, place monitoring, Google Maps scraper alternative, business directory scraper, local business data, travel data, Apify places scraper, places dataset, trending restaurants finder, trending cafes finder, place lead generation.

# Changelog

This Actor's version history is a separate document: https://apify.com/arceus15/social-media-trending-restaurant-scraper/changelog.md

# Actor input Schema

## `category` (type: `string`):

Type of place to find. Examples: restaurants, cafes, street food, parks, tourist attractions, garba events, gyms, salons.

## `location` (type: `string`):

City, region or country to search in. Examples: Nagpur, Mumbai, Goa, Delhi, India, Dubai, London.

## `sources` (type: `array`):

Where to look for places. Instagram, Facebook and Google Trends provide live social buzz and search signals. OpenStreetMap and Google Maps are optional verified place sources.

## `pipeline` (type: `string`):

Social-first is recommended. Full pipeline also enables browser scraping and extra static POI sources.

## `max_spots` (type: `integer`):

Maximum number of ranked places to save to the dataset.

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

Apify Proxy settings used by the Instagram, Facebook and Google Maps scrapers. Residential proxies strongly improve success rates for Instagram and Google Maps.

## `instagram_cookies` (type: `string`):

Optional Netscape cookies.txt content or a sessionid cookie. Only needed if you want authenticated Instagram Reel media downloads.

## Actor input object example

```json
{
  "category": "restaurants",
  "location": "Nagpur",
  "sources": [
    "instagram",
    "facebook",
    "google"
  ],
  "pipeline": "social",
  "max_spots": 50,
  "proxyConfiguration": {
    "useApifyProxy": true
  },
  "instagram_cookies": "sessionid=123456789%3A..."
}
```

# Actor output Schema

## `dataset` (type: `string`):

Tabular dataset of extracted places, ranked by 0–100 trend score.

## `summary` (type: `string`):

Complete run summary including source breakdown counts, raw record metrics, and full spot payload stored in the key-value store.

# 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 = {
    "category": "restaurants",
    "location": "India",
    "sources": [
        "instagram",
        "facebook",
        "google"
    ],
    "pipeline": "social",
    "max_spots": 50,
    "proxyConfiguration": {
        "useApifyProxy": true
    },
    "instagram_cookies": ""
};

// Run the Actor and wait for it to finish
const run = await client.actor("arceus15/social-media-trending-restaurant-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 = {
    "category": "restaurants",
    "location": "India",
    "sources": [
        "instagram",
        "facebook",
        "google",
    ],
    "pipeline": "social",
    "max_spots": 50,
    "proxyConfiguration": { "useApifyProxy": True },
    "instagram_cookies": "",
}

# Run the Actor and wait for it to finish
run = client.actor("arceus15/social-media-trending-restaurant-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 '{
  "category": "restaurants",
  "location": "India",
  "sources": [
    "instagram",
    "facebook",
    "google"
  ],
  "pipeline": "social",
  "max_spots": 50,
  "proxyConfiguration": {
    "useApifyProxy": true
  },
  "instagram_cookies": ""
}' |
apify call arceus15/social-media-trending-restaurant-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,arceus15/social-media-trending-restaurant-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/PNJkfn3yWV0sgZV98/builds/iVuruyeXbe8KaPdqq/openapi.json
