# Easy Weddings Australia Scraper (`crawlerbros/easy-weddings-australia-scraper`) Actor

Scrape Australian wedding vendors from easyweddings.com.au - venues, photographers, caterers, florists, celebrants and 28 more categories across all 8 states/territories. Ratings, pricing, capacity, contact details, galleries and reviews.

- **URL**: https://apify.com/crawlerbros/easy-weddings-australia-scraper.md
- **Developed by:** [Crawler Bros](https://apify.com/crawlerbros) (community)
- **Categories:** Lead generation, Automation, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## Easy Weddings Australia Scraper

Scrape Australian wedding vendors from [easyweddings.com.au](https://www.easyweddings.com.au) — Australia's largest wedding vendor directory. Browse venues, photographers, caterers, florists, celebrants, cake makers, and 25+ more categories across all 8 states and territories, or pull the full profile (description, address, phone, price, gallery, FAQs and reviews) for specific vendors. No login, no cookies, no paid proxies required.

### What this actor does

- **Browse mode** — pick a vendor category + Australian region and get every listed vendor with rating, price, capacity, style tags and contact essentials
- **Vendor detail mode** — pass one or more vendor profile URLs and get the full profile: description, structured address, phone, price range, geo-coordinates, photo gallery, FAQs, an AI review summary, and recent reviews
- **One-call enrichment** — optionally combine both: browse a category/region and automatically fetch the full profile for every matched vendor in the same run
- **32 vendor categories** — venues, photography, video, catering, cakes, flowers, cars, music/DJs, dresses, dress designers, formal wear, bridesmaids, flower girls, lingerie, shoes, jewellery, accessories, hair, beauty, stylists, decorations, invitations, bomboniere, hire, celebrants, planners, general services, accommodation, engagement venues, hens parties, photo booths, honeymoons
- **42 regions** across NSW, VIC, QLD, SA, WA, ACT, TAS and NT
- **10 filters** — vendor name, 5-star badge, exclusive offer, minimum rating, minimum review count, price range, guest capacity, ceremony type, catering type, style tags
- **Empty fields are always omitted** — every record only contains data the vendor's listing actually provides

### Output fields

#### Browse mode (`search`)

- `vendorId`, `name`, `slug`
- `category`, `categorySlug`, `location`, `locationSlug`, `state`, `address`
- `tagline`, `highlights[]` — marketing highlights shown on the listing
- `priceTier`, `priceTierSymbol` (`$`–`$$$$`)
- `rating`, `reviewCount`
- `minPriceAud`, `maxPriceAud`, `averagePriceAud`, `indicativePriceAud` — whichever pricing signal the vendor publishes
- `minCeremonyGuests`, `maxCeremonyGuests`, `minReceptionGuests`, `maxReceptionGuests` (venues)
- `ceremonyTypes[]`, `cateringTypes[]`, `styleTags[]` (venues)
- `latitude`, `longitude`
- `isFiveStar`, `hasExclusiveOffer`
- `thumbnailUrl`
- `profileUrl`, `sourceUrl`
- `recordType: "vendorListing"`, `scrapedAt`

#### Vendor detail mode (`vendorDetails`, or `fetchFullProfile: true`)

All of the above (when enriching), plus:

- `description`, `areaServed`, `priceRange`
- `phone`
- `streetAddress`, `suburb`, `state`, `postcode`, `country`, `fullAddress`
- `mainImageUrl`, `galleryImageUrls[]` (up to 20)
- `faqs[]` — `{ question, answer }`
- `reviews[]` — `{ reviewerName, reviewDate, rating, reviewText }` (most recent, up to 10)
- `aiReviewSummary` — Easy Weddings' AI-generated summary of guest feedback
- `bestRating`
- `recordType: "vendorProfile"`

### Input

| Field | Type | Default | Description |
|---|---|---|---|
| `mode` | select | `search` | `search` (browse by category+region) or `vendorDetails` (fetch specific profile URLs) |
| `category` | select | `WeddingVenues` | Vendor category (mode=search) — 32 options |
| `location` | select | `Sydney` | Australian region (mode=search) — 42 options |
| `nameContains` | text | – | Case-insensitive substring match on vendor business name |
| `fiveStarOnly` | boolean | `false` | Only vendors with the "5-star" badge |
| `exclusiveOfferOnly` | boolean | `false` | Only vendors with an active exclusive offer |
| `minRating` | number | `0` | Minimum average rating (0–5) |
| `minReviewCount` | integer | `0` | Minimum number of reviews |
| `minIndicativePrice` | integer | – | Minimum indicative price (AUD) |
| `maxIndicativePrice` | integer | – | Maximum indicative price (AUD) |
| `minGuests` | integer | – | Venues: minimum reception capacity required (venues with no capacity data always pass through) |
| `maxGuests` | integer | – | Venues: maximum reception minimum allowed, for small weddings (venues with no capacity data always pass through) |
| `ceremonyType` | select | – | Venues: `indoor` / `outdoor` |
| `cateringType` | select | – | Venues: `inhouse` / `thirdparty` |
| `styleTags` | array (select) | – | Venues: match ANY of these style tags: `garden`, `affordable`, `alternative`, `beach`, `ceremony`, `country`, `cultural`, `external`, `golfclub`, `historic`, `hotel`, `luxury`, `marquee`, `micro`, `modern`, `museums`, `restaurant`, `rooftop`, `small`, `traditional`, `unique`, `warehouse`, `waterview`, `winery` |
| `sortBy` | select | `recommended` | Order of emitted vendors: `recommended` (site default) or `reviews` (most-reviewed first) |
| `vendorUrls` | array | – | Full vendor profile URLs (mode=vendorDetails) |
| `fetchFullProfile` | boolean | `false` | mode=search only: also fetch full profile detail for every matched vendor |
| `maxItems` | integer | `50` | Hard cap on emitted records (1–500) |

#### Example: find venues with "garden" in the name

```json
{
  "mode": "search",
  "category": "WeddingVenues",
  "location": "Melbourne",
  "nameContains": "garden",
  "maxItems": 50
}
```

#### Example: browse 5-star Sydney venues with a beach or waterview style

```json
{
  "mode": "search",
  "category": "WeddingVenues",
  "location": "Sydney",
  "fiveStarOnly": true,
  "styleTags": ["beach", "waterview"],
  "maxItems": 50
}
```

#### Example: full profile for specific vendors

```json
{
  "mode": "vendorDetails",
  "vendorUrls": [
    "https://www.easyweddings.com.au/WeddingVenues/Sydney/AtholHall/",
    "https://www.easyweddings.com.au/WeddingPhotography/Melbourne/SomePhotographer/"
  ]
}
```

#### Example: one-call enriched browse

```json
{
  "mode": "search",
  "category": "WeddingPhotography",
  "location": "Melbourne",
  "minRating": 4.5,
  "fetchFullProfile": true,
  "maxItems": 25
}
```

### Use cases

- **Wedding planning marketplaces** — build a searchable directory of Australian wedding vendors
- **Vendor discovery apps** — power a venue/photographer/caterer finder by region and style
- **Market research** — analyse pricing, ratings and capacity trends by category and region
- **Lead generation** — surface top-rated, exclusive-offer vendors for outreach
- **Content & SEO** — feed vendor descriptions, galleries and reviews into local wedding guides
- **Competitive intelligence** — track a category's price tiers and review growth over time

### FAQ

**Does this cover all of Australia?** Yes — 42 regions across all 8 states and territories, from capital cities (Sydney, Melbourne, Brisbane, Perth, Adelaide, Canberra, Hobart, Darwin) to regional areas (Yarra Valley, Hunter Valley, Margaret River, Whitsundays, and more).

**Some regions return 0 results for a category — is that a bug?** No. Easy Weddings' vendor coverage varies by category and region — a small regional area may have zero listed wedding cake makers even though it has several venues. The actor reports 0 records cleanly with a status message rather than fabricating results. (Separately, the actor also has a fallback: if Easy Weddings' main listing briefly returns no results for a popular category/region that normally has plenty of vendors, the actor recovers any vendors shown in the site's own "suggested suppliers" panel for that exact category+region rather than reporting a false zero.)

**Why do some records have `minPriceAud`/`maxPriceAud` and others have `averagePriceAud`?** Different categories publish pricing differently — venues and caterers typically show a per-head price range, while photographers, cake makers and most other categories show a single average package price. `indicativePriceAud` normalizes whichever is available so price filters work consistently across every category.

**Are `ceremonyTypes`, `cateringTypes` and `styleTags` available for every category?** These are venue-specific attributes published by Easy Weddings and will only appear on Wedding Venues records. Other categories omit these fields since the data isn't published.

**How many reviews/photos do I get per vendor?** Vendor profile pages show a curated excerpt: up to 10 of the most recent reviews and up to 20 gallery photos. This mirrors what's publicly visible on the profile page itself.

**Do I need a proxy or login?** No — the site serves full vendor listings and profiles as plain server-rendered HTML with no login wall, so the actor runs with no proxy and no cookies.

**Why did an image URL (`thumbnailUrl` / `galleryImageUrls`) return 403 when I fetched it with `curl` or a bare HTTP client?** Easy Weddings' image CDN (`images-cdn.easyweddings.com.au`) blocks requests that don't send a normal browser-style `User-Agent` header (it does **not** require a matching Referer or cookies — a generic `User-Agent: Mozilla/5.0` is enough). This affects raw command-line tools and some HTTP libraries' bare defaults, but not real browsers, `<img>` tags, or any client that sets a standard User-Agent — which is normal practice for consuming image URLs. `mainImageUrl` (served directly from S3, not the CDN) has no such restriction and works from any client with no headers at all.

**How fresh is the data?** Real-time — every run fetches the live listing/profile pages directly from easyweddings.com.au.

# Actor input Schema

## `mode` (type: `string`):

`search` browses all vendors in a category + region. `vendorDetails` fetches full profile detail (description, address, phone, gallery, reviews) for specific vendor URLs.

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

Wedding vendor category to browse.

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

Australian region to browse. Covers all 8 states/territories.

## `nameContains` (type: `string`):

Case-insensitive substring match against the vendor's business name, e.g. 'garden' to find venues with 'garden' in the name.

## `fiveStarOnly` (type: `boolean`):

Only include vendors with Easy Weddings' "5-star" badge.

## `exclusiveOfferOnly` (type: `boolean`):

Only include vendors currently advertising an exclusive Easy Weddings discount/offer.

## `minRating` (type: `number`):

Drop vendors with an average review rating below this value.

## `minReviewCount` (type: `integer`):

Drop vendors with fewer reviews than this.

## `minIndicativePrice` (type: `integer`):

Drop vendors whose indicative price (per-head for venues/caterers, or average package price for other categories) is below this. Vendors with no price data always pass through.

## `maxIndicativePrice` (type: `integer`):

Drop vendors whose indicative price is above this. Vendors with no price data always pass through.

## `minGuests` (type: `integer`):

Only for Wedding Venues category: keep venues whose maximum reception capacity is at least this many guests. Venues with no published capacity data always pass through.

## `maxGuests` (type: `integer`):

Only for Wedding Venues category: keep venues whose minimum reception requirement is no more than this many guests (useful for small/intimate weddings). Venues with no published capacity data always pass through.

## `ceremonyType` (type: `string`):

Only for Wedding Venues category: filter by ceremony setting.

## `cateringType` (type: `string`):

Only for Wedding Venues category: filter by catering arrangement.

## `styleTags` (type: `array`):

Only for Wedding Venues category: keep venues tagged with ANY of these styles.

## `sortBy` (type: `string`):

Order in which matched vendors are emitted. `recommended` keeps Easy Weddings' own listing order; `reviews` orders by review count (descending), matching the site's "Top Reviews" sort.

## `vendorUrls` (type: `array`):

Full Easy Weddings vendor profile URLs, e.g. `https://www.easyweddings.com.au/WeddingVenues/Sydney/AtholHall/`.

## `fetchFullProfile` (type: `boolean`):

mode=search only. When enabled, fetches each matched vendor's profile page too (description, full address, phone, gallery, reviews) — slower, one extra request per vendor.

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

Hard cap on emitted records.

## Actor input object example

```json
{
  "mode": "search",
  "category": "WeddingVenues",
  "location": "Sydney",
  "nameContains": "",
  "fiveStarOnly": false,
  "exclusiveOfferOnly": false,
  "minRating": 0,
  "minReviewCount": 0,
  "ceremonyType": "",
  "cateringType": "",
  "styleTags": [],
  "sortBy": "recommended",
  "vendorUrls": [
    "https://www.easyweddings.com.au/WeddingVenues/Sydney/AtholHall/"
  ],
  "fetchFullProfile": false,
  "maxItems": 50
}
```

# Actor output Schema

## `vendors` (type: `string`):

Dataset containing all scraped wedding vendor records.

# 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 = {
    "mode": "search",
    "category": "WeddingVenues",
    "location": "Sydney",
    "nameContains": "",
    "fiveStarOnly": false,
    "exclusiveOfferOnly": false,
    "minRating": 0,
    "minReviewCount": 0,
    "ceremonyType": "",
    "cateringType": "",
    "styleTags": [],
    "sortBy": "recommended",
    "vendorUrls": [
        "https://www.easyweddings.com.au/WeddingVenues/Sydney/AtholHall/"
    ],
    "fetchFullProfile": false,
    "maxItems": 50
};

// Run the Actor and wait for it to finish
const run = await client.actor("crawlerbros/easy-weddings-australia-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 = {
    "mode": "search",
    "category": "WeddingVenues",
    "location": "Sydney",
    "nameContains": "",
    "fiveStarOnly": False,
    "exclusiveOfferOnly": False,
    "minRating": 0,
    "minReviewCount": 0,
    "ceremonyType": "",
    "cateringType": "",
    "styleTags": [],
    "sortBy": "recommended",
    "vendorUrls": ["https://www.easyweddings.com.au/WeddingVenues/Sydney/AtholHall/"],
    "fetchFullProfile": False,
    "maxItems": 50,
}

# Run the Actor and wait for it to finish
run = client.actor("crawlerbros/easy-weddings-australia-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 '{
  "mode": "search",
  "category": "WeddingVenues",
  "location": "Sydney",
  "nameContains": "",
  "fiveStarOnly": false,
  "exclusiveOfferOnly": false,
  "minRating": 0,
  "minReviewCount": 0,
  "ceremonyType": "",
  "cateringType": "",
  "styleTags": [],
  "sortBy": "recommended",
  "vendorUrls": [
    "https://www.easyweddings.com.au/WeddingVenues/Sydney/AtholHall/"
  ],
  "fetchFullProfile": false,
  "maxItems": 50
}' |
apify call crawlerbros/easy-weddings-australia-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,crawlerbros/easy-weddings-australia-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/6D6dug3FuyTM69Hht/builds/GfaOHPqCHdoK2eRcQ/openapi.json
