# Mariages.net Scraper — French Wedding Vendor Directory Data (`studio-amba/mariages-net-scraper`) Actor

Scrape wedding vendor listings from Mariages.net: venues, photographers, florists, caterers, and more across France. Get names, addresses, ratings, price ranges, and geo-coordinates for prospecting and market research.

- **URL**: https://apify.com/studio-amba/mariages-net-scraper.md
- **Developed by:** [Studio Amba](https://apify.com/studio-amba) (community)
- **Categories:** Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $5.00 / 1,000 result scrapeds

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

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — 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

## Mariages.net Scraper

Extract wedding vendor listings from [Mariages.net](https://www.mariages.net) — France's leading wedding vendor marketplace — into structured JSON with vendor names, addresses, ratings, price ranges, and geo-coordinates across venues, photographers, florists, caterers, and 15+ other categories.

### What is Mariages.net Scraper?

**Mariages.net Scraper** lets you extract structured wedding-vendor data from France's largest wedding marketplace, helping you build vendor lead lists, analyze regional pricing, and monitor competitor listings — all without manual browsing or copy-pasting.

- **Generate B2B leads at scale:** extract vendor names, categories, addresses, and price ranges for any wedding category in any French region — ready for your CRM or outreach tool
- **Benchmark vendor pricing:** compare `priceRangeText` across venues, photographers, and caterers in a region to price your own services competitively
- **Track ratings and reviews:** monitor `rating` and `reviewCount` over time to spot rising or declining vendors in a category
- **Map vendor density:** use `latitude`/`longitude` to build maps of vendor coverage by department or region
- **Power wedding-industry research:** feed structured vendor data into market reports, directories, or lead-gen tools

Mariages.net has **no public API and no bulk export feature**. This scraper is the only way to get structured data out of the platform at scale.

### What data does Mariages.net Scraper extract?

- **Vendor name** — business or professional name
- **Category** — vendor type (venue, photographer, caterer, florist, and 15+ more)
- **Full address** — street, postal code, city, and department
- **Price range** — vendor's advertised starting price as free text (e.g. "À partir de 600€")
- **Rating** — average customer rating out of 5
- **Review count** — number of customer reviews
- **Image URL** — vendor's primary listing photo
- **GPS coordinates** — latitude and longitude for mapping
- **Direct URL** to the listing on Mariages.net
- **Scraped at** — timestamp for data freshness tracking

### How to scrape Mariages.net data

The input is simple: set a **category** and optionally a **location**, then hit run.

#### Input parameters

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| **category** | string | `"salle-mariage"` | Vendor category slug (e.g. "photo-mariage" for photographers, "traiteur-mariage" for caterers, "fleurs-mariage" for florists, "robe-de-mariee" for wedding dresses) |
| **location** | string | — | Optional region, department, or city slug to narrow results (e.g. "ile-de-france", "paris", "alsace") |
| **maxResults** | integer | `100` | Maximum number of vendor listings to return (1–500, capped since the actor has no mid-run resume state) |
| **scrapeDetails** | boolean | `true` | Visit each vendor's profile page for full address, geo-coordinates, price range, and image via structured data |
| **brightDataApiKey** | string | — | Your Bright Data Web Unlocker API key. Required — Mariages.net sits behind Akamai bot protection |
| **proxyConfiguration** | object | Residential proxies | Proxy settings for the run |

#### Tips for best results

- **Start small, then scale:** test with `maxResults: 5` to verify output before running larger batches
- **Combine category + location:** e.g. `category: "photo-mariage"`, `location: "alsace"` narrows to Alsatian wedding photographers
- **Keep `scrapeDetails` on for full coverage:** listing pages alone miss department, exact address, and geo-coordinates for most vendors
- **Bring your own Bright Data key:** the scraper won't run without a Web Unlocker API key set in `brightDataApiKey` or the `BRIGHT_DATA_API_KEY` environment variable

### Output

Results are stored in a **dataset** that you can download in JSON, CSV, Excel, XML, or HTML format directly from the Apify Console.

#### JSON example

```json
{
    "name": "Château de Vaux-le-Vicomte",
    "category": "Lieux de réception",
    "address": "78740 Maincy",
    "city": "Maincy",
    "postalCode": "77950",
    "department": "Seine-et-Marne",
    "priceRangeText": "À partir de 8 000 €",
    "rating": 4.9,
    "reviewCount": 62,
    "imageUrl": "https://images.mariages.net/vendor/photo.jpg",
    "url": "https://www.mariages.net/lieu-mariage/chateau-de-vaux-le-vicomte--e123456",
    "scrapedAt": "2026-07-27T12:00:00.000Z",
    "latitude": 48.5667,
    "longitude": 2.7167
}
```

### How much does it cost to scrape Mariages.net?

Mariages.net Scraper uses **Bright Data Web Unlocker** to get past Akamai's bot protection, with one request per listing page and one per detail page (when `scrapeDetails` is on).

| Scenario | Est. items |
|----------|-----------|
| Listing only, 100 vendors | ~5 listing-page requests |
| With detail pages, 100 vendors | ~5 listing + 100 detail requests |

**Pricing breakdown:** each vendor with `scrapeDetails: true` costs roughly one Bright Data Web Unlocker request, in addition to any Apify compute usage. Turn `scrapeDetails` off for a cheaper, listing-only run when you don't need geo-coordinates or exact price text.

### Can I integrate Mariages.net Scraper with other apps?

Yes. Mariages.net Scraper connects with any tool through [Apify integrations](https://apify.com/integrations):

- **Google Sheets** — automatically export vendor listings to a spreadsheet
- **Slack / Email** — get notified when new vendors match your criteria
- **Zapier / Make** — trigger workflows when data is ready
- **Airtable** — build a searchable vendor directory
- **REST API** — call the scraper programmatically from any language
- **Webhooks** — get notified when a run finishes

### Can I use Mariages.net Scraper as an API?

Yes. Use the [Apify API](https://docs.apify.com/api/v2) to run Mariages.net Scraper programmatically.

**Python:**

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_API_TOKEN")
run = client.actor("studio-amba/mariages-net-scraper").call(run_input={
    "category": "photo-mariage",
    "location": "ile-de-france",
    "maxResults": 200,
    "scrapeDetails": True,
})

for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(f"{item['name']} — {item.get('city')} — {item.get('priceRangeText')}")
```

**JavaScript:**

```javascript
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });
const run = await client.actor('studio-amba/mariages-net-scraper').call({
    category: 'photo-mariage',
    location: 'ile-de-france',
    maxResults: 200,
    scrapeDetails: true,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
```

Check the [API tab](https://apify.com/studio-amba/mariages-net-scraper/api) for full documentation.

### FAQ

#### What is Mariages.net?

Mariages.net (part of The Knot Worldwide, the same group behind WeddingWire) is France's leading wedding vendor marketplace, listing tens of thousands of venues, photographers, caterers, florists, and other wedding professionals across every region of France.

#### How does Mariages.net Scraper work?

It fetches category listing pages through Bright Data's Web Unlocker to get past Akamai's bot protection, then extracts vendor tiles from the HTML. When `scrapeDetails` is on, it also visits each vendor's profile page and reads the embedded LocalBusiness structured data for full address, geo-coordinates, and price range.

#### Why do I need a Bright Data API key?

Mariages.net blocks plain HTTP requests with a 403 from Akamai on every path and user agent. Bright Data's Web Unlocker solves the challenge server-side and returns real HTML, the same approach used by our other Akamai-protected French-site scrapers.

#### Why are some fields empty?

Fields like `address`, `postalCode`, `latitude`, and `longitude` come from the vendor's detail page. With `scrapeDetails: false`, only what's shown on the listing tile (name, category, city, rating) is captured. Even with details on, not every vendor publishes a full address or price on their profile.

#### Can I search by department instead of region?

Yes. The `location` field accepts region slugs ("ile-de-france"), department slugs ("alsace"), and city slugs — Mariages.net nests all three the same way under the category path.

#### How often should I run this scraper?

For vendor lead generation, monthly or quarterly runs are usually enough — the vendor base doesn't turn over quickly. For price-monitoring or competitive tracking, monthly runs will catch most changes.

#### Is it legal to scrape Mariages.net?

This scraper extracts publicly available vendor data that Mariages.net displays to all visitors. The data is factual (business names, addresses, price ranges, ratings) and consists of professional listing information. As with any scraping tool, use the data responsibly and in compliance with applicable laws including GDPR.

### Limitations

- **France only.** Mariages.net's French listings are covered; the international Knot Worldwide sites (WeddingWire, Bodas.net, etc.) are not.
- **Bright Data key required.** Mariages.net's Akamai protection cannot be bypassed with Apify Proxy alone.
- **Price ranges are free text.** Vendors advertise a starting price, not a fixed rate — treat `priceRangeText` as indicative, not a quote.
- **Detail-page enrichment increases run time and cost.** Turn `scrapeDetails` off for a faster, cheaper listing-only run.
- **Single-page categories.** A handful of niche categories have too few vendors to expose pagination IDs; the scraper returns what's on page one for those.

### Other wedding vendor data scrapers

Combine Mariages.net Scraper with these actors for wider wedding-market coverage:

- [Hochzeitsportal24 Scraper](https://apify.com/studio-amba/hochzeitsportal24-scraper) — German wedding vendor contact data
- [Hochzeitslocation.de Scraper](https://apify.com/studio-amba/hochzeitslocation-scraper) — German wedding venues
- [Trouwen.nl Scraper](https://apify.com/studio-amba/trouwen-scraper) — Dutch wedding venues & vendors

### Your feedback

Found a bug or have a feature request? Please open an issue on the [Issues tab](https://apify.com/studio-amba/mariages-net-scraper/issues). We actively maintain this scraper and respond to all reports.

# Actor input Schema

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

Mariages.net category slug to scrape (e.g. 'salle-mariage' for reception venues, 'photo-mariage' for photographers, 'traiteur-mariage' for caterers, 'fleurs-mariage' for florists, 'robe-de-mariee' for wedding dresses, 'musique-mariage' for DJs/musicians, 'decoration-mariage' for decorators). Defaults to 'salle-mariage' (venues) — the site's largest category with 9,000+ listings.

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

Optional region, department, or city slug to narrow results, appended as a sub-path (e.g. 'ile-de-france', 'paris', 'alsace'). Leave empty to scrape the national category listing.

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

Maximum number of vendor listings to scrape. Capped at 500 — this actor has no mid-run resume state, so very large runs with scrapeDetails on (each vendor is a separate detail-page fetch) risk losing progress on a migration. Run it multiple times with different categories/locations for larger coverage.

## `scrapeDetails` (type: `boolean`):

Visit each vendor's profile page to fetch full address, geo-coordinates, price range text, and image via the LocalBusiness structured data. Turn off only if you don't need those fields and want a faster run (listing-page data is more limited).

## `brightDataApiKey` (type: `string`):

Your Bright Data API key for the Web Unlocker zone. Required to bypass Mariages.net's Akamai bot protection. Get one at https://brightdata.com

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

Select proxies to be used by this actor.

## Actor input object example

```json
{
  "category": "photo-mariage",
  "location": "ile-de-france",
  "maxResults": 5,
  "scrapeDetails": true,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# 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": "photo-mariage",
    "location": "ile-de-france",
    "maxResults": 5,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("studio-amba/mariages-net-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": "photo-mariage",
    "location": "ile-de-france",
    "maxResults": 5,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("studio-amba/mariages-net-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 '{
  "category": "photo-mariage",
  "location": "ile-de-france",
  "maxResults": 5,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call studio-amba/mariages-net-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=studio-amba/mariages-net-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/acts/fGn5aa1YLD6sPxUQs/builds/sdnYtQZWRRbf4uIIe/openapi.json
