# HERE WeGo Places Scraper (`rl1987/here-wego-places-scraper`) Actor

Scrape POI / places data (name, category, address, coordinates, phone, website, opening hours, rating, review count) from the HERE Places API used by the HERE WeGo app. Search by keyword + location + category.

- **URL**: https://apify.com/rl1987/here-wego-places-scraper.md
- **Developed by:** [R.L.](https://apify.com/rl1987) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 1,000 poi rows

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

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

## HERE WeGo Places Scraper

Scrape **points of interest (POIs) / places** from [HERE](https://wego.here.com) — the maps
provider behind the HERE WeGo app — without an API key or account. Search by keyword, browse by
category, or list what's near a point, and get clean structured rows: name, category, full address,
**coordinates**, phone, website, opening hours, and rating when available.

It talks to HERE's own Places API directly (the same one the HERE WeGo mobile app uses), so it's
fast and returns structured JSON — no headless browser, no HTML parsing. A drop-in alternative to a
Google Maps place scraper, backed by HERE's global POI dataset.

### What you can do

- **Keyword search** — "coffee", "hardware store", "pharmacy" near a place.
- **Category browse** — every Restaurant / Hotel / Landmark near a point, no keyword needed.
- **Nearby lookup** — everything around a specific `lat,lng`.
- **Lead generation & location intelligence** — names, addresses, phones, websites and coordinates
  for businesses in an area.
- **Store/competitor mapping, geo datasets, address enrichment.**

### Input

| Field | Type | Default | Description |
|-------|------|---------|-------------|
| `location` | string | – | **Required.** Area/city name (`"Berlin"`, `"San Francisco"`) **or** `"lat,lng"` (`"52.52,13.405"`). This is the anchor point the search runs around. |
| `q` | string | – | Keyword to search (`"coffee"`, `"restaurant"`, `"hotel"`). Optional if a `category` is given. |
| `category` | select | – | Restrict to a place category (dropdown): Restaurant, Coffee & Tea, Museum & Nightlife, Landmark & Attraction, Hotel & Lodging, Gas Station, Hospital & Health Care, Government & Community. |
| `maxItems` | integer | `50` | Max POI rows to return. HERE caps a single search at **~100 results**. |
| `language` | select | `en` | Response language for names/categories. |
| `proxyConfiguration` | proxy | Apify Proxy | Proxy routing. Apify Proxy is on by default. |

You must provide a **`location`** (a name to geocode, or coordinates) — HERE Places search needs an
anchor point. At least one of `q` or `category` is expected.

### Usage & examples

#### 1) Keyword search near a place

```json
{ "q": "coffee", "location": "San Francisco", "maxItems": 20 }
```

→ one row per place:

```json
{
  "placeId": "here:pds:place:8409q8yy-f095baace59a4098ada28e34a27bfaa1",
  "name": "STARBUCKS",
  "category": "Coffee Shop",
  "categories": ["Coffee Shop"],
  "addressLabel": "STARBUCKS, 150 Van Ness Ave, San Francisco, CA 94102-5200, United States",
  "street": "Van Ness Ave",
  "houseNumber": "150",
  "postalCode": "94102-5200",
  "city": "San Francisco",
  "state": "California",
  "country": "United States",
  "countryCode": "USA",
  "lat": 37.77707,
  "lng": -122.41936,
  "distance": 18,
  "phone": [],
  "website": ["https://www.starbucks.com"],
  "email": [],
  "openingHours": ["Mon-Fri: 04:30 - 20:00", "Sat: 05:00 - 21:00", "Sun: 05:00 - 20:00"],
  "isOpen": true,
  "rating": null,
  "reviewCount": null,
  "ratingSupplier": null,
  "photos": []
}
```

#### 2) Browse a whole category (no keyword)

```json
{ "category": "500-5000-0000", "location": "Las Vegas", "maxItems": 30 }
```

→ every Hotel & Lodging place near Las Vegas (same row shape as above). Pick the category from the
dropdown; it maps to HERE's category id for you.

#### 3) Around specific coordinates

```json
{ "q": "museum", "location": "48.8566,2.3522", "maxItems": 20 }
```

→ museums around that point (central Paris), each with its own `distance` (metres) from the anchor.

### Output fields

| Field | Description |
|-------|-------------|
| `placeId` | Stable HERE place identifier |
| `name` | Place name |
| `category` / `categories` | Primary category / all categories |
| `addressLabel` | Full formatted address |
| `street`, `houseNumber`, `postalCode`, `city`, `state`, `country`, `countryCode` | Address parts |
| `lat`, `lng` | Coordinates |
| `distance` | Metres from the search anchor |
| `phone`, `website`, `email` | Contact arrays (may be empty) |
| `openingHours` | Human-readable opening hours (array) |
| `isOpen` | Whether it's open at scrape time |
| `rating`, `reviewCount`, `ratingSupplier` | Rating when HERE provides one (often `null`) |
| `photos` | Photo URLs when available |

### Pricing

Pay-per-result: **$2.00 per 1,000 POI rows** (`$0.002` per row). You pay only for the places
returned — a search that matches nothing costs nothing.

### Notes & limits

- **No account or API key needed** — the actor authenticates with HERE for you.
- **~100 results per search**: HERE caps a single query at about 100 places. To cover more, run
  several searches with narrower keywords, tighter categories, or different `lat,lng` anchors.
- **Rating/reviews are sparse**: HERE's dataset focuses on business/address data; `rating`,
  `reviewCount` and `photos` are frequently `null`/empty. Use a Google/Yelp scraper if reviews are
  your priority.
- **Invalid location** fails fast with a clear message ("Could not find location '…' — check the
  spelling, or pass coordinates as 'lat,lng'.").

### FAQ

**Do I need a HERE API key?** No.

**How do I get more than ~100 results?** Split by category, keyword, or geographic anchor and run
multiple searches — HERE limits each individual search to ~100.

**What export formats?** JSON, CSV, Excel, XML, JSONL, or live via the Apify API.

**Is scraping this legal?** You are responsible for how you use the data. Scrape only public place
data and comply with HERE's Terms and applicable law (e.g. GDPR/CCPA for any personal data).

# Actor input Schema

## `q` (type: `string`):

Place / keyword to search (e.g. 'coffee', 'restaurant', 'hotel')

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

Area or city name (e.g. 'Berlin') OR 'lat,lng' (e.g. '52.52,13.405')

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

Maximum number of POI rows to return (0 = unlimited)

## `language` (type: `string`):

Response language

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

Filter by a place category (optional)

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

Route requests through a proxy (Apify Proxy by default).

## Actor input object example

```json
{
  "q": "coffee",
  "location": "Berlin",
  "maxItems": 50,
  "language": "en",
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# 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 = {
    "q": "coffee",
    "location": "Berlin",
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("rl1987/here-wego-places-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 = {
    "q": "coffee",
    "location": "Berlin",
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("rl1987/here-wego-places-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 '{
  "q": "coffee",
  "location": "Berlin",
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call rl1987/here-wego-places-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,rl1987/here-wego-places-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/HU6dQJDAbBz69vC0A/builds/akheUEd5EI1VVvzFo/openapi.json
