# Coworking Leads Extractor (Google Maps, Emails, Socials, Phone) (`crawlerforge/coworking-leads`) Actor

Turn Google Maps queries into an enriched list of coworking spaces: name, category, rating, reviews, phone (international), website, contact page, emails, socials, address, Maps URL. Niche-tuned filters + quality score (gold/silver/bronze). CSV/JSON + Apify Dataset export.

- **URL**: https://apify.com/crawlerforge/coworking-leads.md
- **Developed by:** [CrawlerForge](https://apify.com/crawlerforge) (community)
- **Categories:** Lead generation, SEO tools, Real estate
- **Stats:** 14 total users, 0 monthly users, 93.3% runs succeeded, 2 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

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

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

## Coworking Leads Extractor — Google Maps Scraper (Emails, Socials, Phone)

**Apify Actor · CSV/JSON export · Ready-to-prospect coworking lists**

Get a clean, enriched **coworking spaces** lead list from **Google Maps** in minutes.

- ✅ **Core fields**: name, category, rating, reviews, phone (international), website, **contact page**, **emails**, socials, address, Google Maps URL
- ⭐ **Quality score + tiers** to prioritize the best spaces (gold / silver / bronze)
- 🌍 **International-ready**: phone normalization by country, multi-language category cleanup
- ⚡ **Fast & stable**: Playwright, safe concurrency, resource blocking
- 📦 Exports to **Apify Dataset**, **CSV** and **JSON**

> Keywords: *coworking scraper*, *Google Maps coworking*, *coworking leads extractor*, *coworking emails*, *coworking contact list*, *B2B lead generation coworking*, *Apify actor coworking*.

![Sample](docs/sample_preview.png)

***

### What you get

A **CSV ready to prospect** with:

- **Business**: `name`, `category`, `address_full`, `maps_url`
- **Trust**: `rating`, `reviews_count`
- **Contact-ready**: `phone` (+XX international), `website`, `contact_page_url`, `email_1`, `email_2`
- **Social presence**: `linkedin_company`, `instagram`, `facebook`, `x`
- **Prioritization**: `quality_score` (0–1) and `tier` (gold/silver/bronze)

***

### Why a niche actor for coworking?

Generic “Google Maps Scraper” tools are crowded and produce noisy data.\
This actor is **coworking-focused**:

- Category detection tuned for *coworking / shared office / workspace* (multi-language)
- Directory filtering (Yelp, Yellow Pages, etc.)
- Scoring model biased towards **contactability** (emails + website + LinkedIn)\
  → **Higher conversion**, **cleaner exports**, **less manual cleanup**.

***

### How to use (Apify UI — no code)

1. Open the Actor on Apify.
2. Fill **Location** (e.g. `Lisbon, Portugal`, `Paris, France`).
3. *(Optional)* Keep **Query = `coworking`** or tweak to `coworking space`, `shared office`, etc.
4. Add filters (rating/reviews/has website) if needed.
5. Run → Download your **CSV / JSON** from the run’s **Dataset**.

**Good starting examples**

- `Location`: `Lisbon, Portugal` · `Max results`: `60` · `Min reviews`: `5` · `Has website`: ✅
- `Location`: `Paris, France` · `Max results`: `100` · `Min rating`: `4.2`
- `Location`: `Berlin, Germany` · `Max results`: `80` · `Min reviews`: `10` · `Has website`: ✅

***

### Input fields

| Field | Description |
|---|---|
| **Location** | City/region (+country for phone normalization). Example: `Lisbon, Portugal`. |
| **Query** | Search term (defaults to `coworking`). You can use `coworking`, `coworking space`, `shared office`, `workspace`, etc. |
| **Max results** | Target number of results (typical: 50–200). |
| **Concurrency** | How many detail pages open in parallel (1–8). |
| **Minimum rating** | Keep only spaces with rating ≥ this value (e.g., `4.2`). |
| **Minimum reviews** | Keep only spaces with at least this many reviews. |
| **Must have website** | Keep only spaces that have a website. |
| **Export results** | Also save local `results.csv` and `results.json` (in addition to the Apify Dataset). |

> **Tip:** Include the **country** in *Location* for better phone normalization.

***

### Output sample (CSV columns)

| name | category | rating | reviews_count | phone | website | contact_page_url | email_1 | email_2 | facebook | instagram | linkedin_company | address_full | maps_url | quality_score | tier |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|

***

### Pricing

This actor uses **Apify compute units (CUs)** — billed by Apify.

- 🆓 **Free trial**: up to **0.2 CU** (≈ ~20 results) for new users
- 💳 **Pay as you go**: at your Apify account rate (default ~$0.25 / CU)
- 📈 Indicative usage:
  - \~**1 CU** → ≈ **100 results**
  - \~**10 CU** → ≈ **1,000 results**
  - \~**50 CU** → ≈ **5,000 results**

> Actual CU usage varies with city density, filters, and website enrichment timeouts.

***

### Best practices

- Keep **Concurrency ≤ 6** for stability.
- Use **Minimum reviews** to target established spaces.
- Prefer **Location with country** (e.g., `Paris, France`) to normalize phones.
- If you need more emails, enable **Has website** and raise **Min reviews**.

***

### FAQ

**I get fewer results than requested.**\
Google Maps may cap the visible list. Try more specific queries, reduce concurrency, or re-run.

**Why few emails on some websites?**\
Not every domain exposes emails. We scan the homepage and the **Contact** page if detected.

**Directories (Yelp, etc.) appear.**\
We filter most directories by name/domain, but noise can occur. You can tune queries and filters to reduce it further.

**Phone format seems inconsistent.**\
Add the **country** in *Location* to improve normalization to international `+XX` format.

> **Compliance:** Always follow source Terms and applicable laws when scraping and contacting businesses.

***

### Roadmap

- City / country fields parsed separately
- Opening hours & amenities (meeting rooms, phone booths, 24/7)
- Optional export to **Google Sheets / Airtable / CRM**
- Advanced **niche-aware scoring** and tagging

***

### Support & feedback

Issues, feature requests, or custom niches (real estate, medical, education)?\
Open an issue or contact us via the Actor page.

***

### 🇫🇷 Version française — Extracteur de Leads Coworking (Emails, Réseaux, Téléphone)

Transformez une recherche **Google Maps** en **liste de leads d’espaces de coworking** enrichie et prête à prospecter.

- ✅ **Champs clés** : nom, catégorie, note, avis, téléphone (international), site, page contact, emails, réseaux sociaux, adresse, URL Google Maps
- ⭐ **Score qualité + tiers** (gold/silver/bronze) pour prioriser
- 🌍 **International** : normalisation du téléphone par pays, nettoyage multi-langues des catégories
- ⚡ **Rapide & stable** : Playwright, concurrence maîtrisée, blocage sélectif des ressources
- 📦 Export **Dataset Apify**, **CSV** et **JSON**

#### Utilisation (UI Apify — sans code)

Renseignez **Location** (ex. `Paris, France`) et laissez **Query = `coworking`** (par défaut).\
Ajoutez des filtres (note/avis/site) si besoin, puis lancez et téléchargez le **CSV/JSON**.

**Bons réglages de départ**

- `Location`: `Lisbon, Portugal` · `Max results`: `60` · `Min reviews`: `5` · `Has website`: ✅
- `Location`: `Paris, France` · `Max results`: `100` · `Min rating`: `4.2`

> **Conformité** : respectez les CGU des sources et la réglementation (prospection, données, RGPD).

***

# Actor input Schema

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

City or region (add country for better phone normalization). e.g. Lisbon, Portugal

## `query` (type: `string`):

Search term (kept for flexibility). Default 'coworking'.

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

Maximum number of businesses to scrape (1–500).

## `concurrency` (type: `integer`):

How many detail pages to open in parallel (1–8).

## `min_rating` (type: `string`):

Filter: keep only places with rating ≥ this value (e.g. 4.2).

## `min_reviews` (type: `integer`):

Filter: keep only places with at least this number of reviews.

## `has_website` (type: `boolean`):

Filter: keep only businesses with a website.

## `exportFile` (type: `boolean`):

Save local files in addition to Apify dataset.

## Actor input object example

```json
{
  "location": "Paris, France",
  "query": "coworking",
  "maxResults": 60,
  "concurrency": 4,
  "min_rating": "0",
  "min_reviews": 0,
  "has_website": false,
  "exportFile": true
}
```

# 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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("crawlerforge/coworking-leads").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 = {}

# Run the Actor and wait for it to finish
run = client.actor("crawlerforge/coworking-leads").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 '{}' |
apify call crawlerforge/coworking-leads --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,crawlerforge/coworking-leads"
        }
    }
}
```

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/jJTXf3QUyc1bTHkvM/builds/Kgns7OhQN0iVkgxdR/openapi.json
