# James Edition Real Estate Scraper (`parseforge/james-edition-real-estate-scraper`)

Effortlessly collect detailed luxury real estate listings from James Edition with our advanced data collection tool. Designed for real estate professionals, investors, and market researchers, this tool pulls comprehensive listing data from world's premier luxury real estate marketplace.

- **URL**: https://beta-securitybyobscurity.apify.com/parseforge/james-edition-real-estate-scraper.md
- **Developed by:** [ParseForge](https://beta-securitybyobscurity.apify.com/parseforge) (community)
- **Categories:** Real estate, Developer tools, Automation
- **Stats:** 17 total users, 17 monthly users, 100.0% runs succeeded, 2 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

Pay per event

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
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

# README

## James Edition Real Estate Scraper

🚀 **Extract comprehensive luxury real estate data from James Edition with our advanced data collection tool.**

Designed for real estate professionals, investors, and market researchers, this tool pulls detailed listing information from James Edition—the premier luxury real estate marketplace. Get critical data like property specifications, pricing details, agent contacts, and rich property features, all with no coding required.

**Target Audience:** Real estate professionals, luxury property investors, market researchers, property developers

**Primary Use Cases:** Market research, competitive analysis, lead generation, investment research, luxury property tracking

### What Does James Edition Scraper Do?

This tool collects detailed luxury real estate listings from James Edition, supporting both individual listing URLs and broad search pages. It delivers:

- **Complete Property Details**: Bedrooms, bathrooms, living area, property type
- **Multi-Currency Pricing**: USD, EUR, and original data currency values
- **Rich Location Data**: City, state, country, subdivision, country codes
- **Agent & Office Information**: Names, IDs, photos, logos, contact details
- **Comprehensive Media Gallery**: Primary images, multiple image URLs, side photos
- **Property Features**: All amenities, facilities, and special characteristics
- **Market Intelligence**: Listing position, promotion status, search rankings
- **Structured Data**: JSON-LD schema information for enhanced accuracy

**Business Value:** Make informed decisions about luxury property investments, track market trends, and identify new business opportunities with comprehensive, up-to-date data.

### How to use the James Edition Scraper - Full Demo

[![Watch the tutorial](https://img.youtube.com/vi/_D1f4Axj82k/maxresdefault.jpg)](https://www.youtube.com/watch?v=_D1f4Axj82k)

*Watch this short demo to see how easy it is to get started!*

### Input

To start James Edition web scraping, simply fill in the input form. You can scrape James Edition based on:

- **startUrl** - Use James Edition search URLs (e.g., https://www.jamesedition.com/real\_estate/all?bedrooms\_from=3\&eur\_price\_cents\_from=300461912\&eur\_price\_cents\_to=343785634). Add filters on James Edition's search page, then copy the URL here.
- **maxItems** - Set the maximum number of properties to collect. For everything, use a high number like 99999. **Note: Free users are limited to 1000 results per search.**

Here's what the filled-out input schema looks like:

![Input Configuration](assets/input.png)

And here it is written in JSON:

```json
{
    "startUrl": "https://www.jamesedition.com/real_estate/all?bedrooms_from=3&eur_price_cents_from=300461912&eur_price_cents_to=343785634",
    "maxItems": 99999
}
```

**Pro Tip:** Use James Edition's advanced search filters to target specific property types, sizes, or price ranges for more focused results.

### Output

After the Actor finishes its run, you'll get a dataset with the output. The length of the dataset depends on the amount of results you've set. You can download those results as an Excel, HTML, XML, JSON, and CSV document.

Here's an example of scraped James Edition data you'll get if you decide to scrape luxury property listings:

![Output Example](assets/output.png)

```json
{
	"listingUrl": "https://www.jamesedition.com/real_estate/funchal-portugal/where-luxury-rediscovers-the-soul-of-madeira-16060756",
	"title": "Apartment in Sao Martinho, Madeira, Portugal",
	"propertyType": "Apartment",
	"price": {
		"parsed": 3733454,
		"formatted": "$3,733,454",
		"currency": "$",
		"usd": 3733454,
		"euro": 3200000,
		"dataPrice": 3200000,
		"dataCurrency": "EUR"
	},
	"location": {
		"city": "Sao Martinho",
		"state": "Madeira",
		"country": "Portugal",
		"subdivision": "Ilha da Madeira",
		"countryCode": "PT"
	},
	"agent": {
		"name": "CAETANO REAL ESTATE",
		"id": "1507444",
		"photo": ""
	},
	"primaryImageUrl": "https://img.jamesedition.com/listing_images/2025/08/15/08/50/34/7c3860e9-3412-4e37-906c-adecb0a6c619/je/556x342xcxm.jpg",
	"scrapedTimestamp": "2025-08-28T23:21:50.466Z",
	"bedrooms": 4,
	"bathrooms": 4,
	"livingArea": {
		"value": 383,
		"unit": "sqm"
	},
	"imageUrls": [
		"https://img.jamesedition.com/listing_images/2025/08/15/08/50/34/0e5fabc9-e474-4e40-9102-00a35f9a9e92/je/507x312xc.jpg",
		"https://img.jamesedition.com/listing_images/2025/08/15/08/50/34/29523be5-83b8-4153-ae08-acc396e722c4/je/507x312xc.jpg"
	],
	"sidePhotos": [
        "https://img.jamesedition.com/listing_images/2025/08/15/08/50/34/b52058d4-ae03-49d5-9434-9b77a521323f/je/507x312xc.jpg",
		"https://img.jamesedition.com/dealer_listings_logos/2025/08/20/11/03/07/6bcbc74d-a40a-4d8f-8a5d-a41026d92d2d/je/192x80xs.jpg"
    ],
	"badges": [
		"video"
	],
	"features": [
		"4 Beds",
		"4 Baths",
		"383 sqm"
	],
	"description": "",
	"office": {
		"name": "CAETANO REAL ESTATE",
		"logo": "https://img.jamesedition.com/dealer_listings_logos/2025/08/20/11/03/07/6bcbc74d-a40a-4d8f-8a5d-a41026d92d2d/je/192x80xs.jpg",
		"id": "103223",
		"url": "https://www.jamesedition.com/offices/real_estate/caetano-real-estate-103223"
	},
	"dataAttributes": {
		"id": "16060756",
		"priceUsd": "3733454",
		"priceEuro": "3200000",
		"dataPrice": "3200000",
		"dataCurrency": "EUR",
		"dataCountryCode": "PT",
		"dataCountry": "Portugal",
		"dataCountrySubdivision": "Ilha da Madeira",
		"dataCity": "Sao Martinho",
		"dataOfficeId": "103223",
		"dataAgentId": "1507444",
		"dataCategory": "RealEstate",
		"dataPosition": "Search",
		"dataSerpPosition": "1",
		"dataType": "Listing card"
	},
	"structuredData": {
		"@context": "http://schema.org",
		"@type": "House",
		"accommodationCategory": "Apartment",
		"numberOfBathroomsTotal": "4",
		"numberOfBedrooms": "4",
		"address": "Sao Martinho, Madeira, Portugal"
	},
	"cardInfo": {
		"isPromoted": false,
		"isFeatured": false,
		"hasContactButton": true,
		"hasSaveButton": true,
		"category": "RealEstate",
		"position": "Search",
		"serpPosition": 1,
		"type": "Listing card"
	}
}
```

**What You Get:** Complete property specifications, multi-currency pricing details, agent and office contact information, rich media gallery, and comprehensive market intelligence data
**Download Options:** CSV, Excel, or JSON formats for easy analysis in your business tools

### Why Choose the James Edition Scraper?

- **Multi-Currency Support**: Get pricing in USD, EUR, and original data currency for accurate market analysis
- **Rich Media Gallery**: Extract all property images, side photos, and visual content for comprehensive property evaluation
- **Complete Agent Information**: Agent names, photos, IDs, and detailed office information for direct outreach
- **Property Features**: All amenities, facilities, and special characteristics for detailed property analysis
- **Market Intelligence**: Listing position, promotion status, and search rankings for competitive analysis
- **Structured Data**: JSON-LD schema information for enhanced accuracy and SEO insights
- **No Duplicates**: Automatically skips items already in your dataset
- **User-Friendly**: No coding needed—just input URLs and go

**Time Savings:** Save 4-6 hours per week compared to manual luxury property research
**Cost Efficiency:** Fraction of the cost of hiring a research assistant or using expensive industry databases

### How to Use

1. **Sign Up**: Create a free Apify account (takes 2 minutes)
2. **Find the Scraper**: Visit the James Edition Scraper page
3. **Set Input**: Add your start URLs, max items, and dataset name (optional)
4. **Run It**: Click "Start" and let it collect your data
5. **Download Data**: Get your results in the "Dataset" tab as CSV, Excel, or JSON

**Total Time:** 5 minutes setup, 10-30 minutes for data collection
**No Technical Skills Required:** Everything is point-and-click

### Business Use Cases

**Real Estate Professionals:**

- Track new luxury listings daily
- Monitor price changes and market trends
- Identify investment opportunities quickly
- Generate leads for high-net-worth clients

**Market Researchers:**

- Collect competitive intelligence
- Analyze pricing strategies across markets
- Monitor industry trends and luxury property movements
- Build comprehensive market databases

**Luxury Property Investors:**

- Find new investment opportunities
- Track competitor listings and pricing
- Generate leads for acquisitions
- Support investment decisions with comprehensive data

**Data Analysts:**

- Build comprehensive luxury market databases
- Create regular market reports and insights
- Support business decisions with rich data
- Analyze industry trends and market movements

### Using James Edition Scraper with the Apify API

For advanced users who want to automate this process, you can control the scraper programmatically with the Apify API. This allows you to schedule regular data collection and integrate with your existing business tools.

- **Node.js**: Install the apify-client NPM package
- **Python**: Use the apify-client PyPI package
- See the [Apify API reference](https://docs.apify.com/api/v2) for full details

### 💰 Pricing

James Edition Scraper uses the **Pay-per-event** pricing model. You're charged a fixed price for specific events. Your costs can, therefore, be easily calculated. Here's the pricing breakdown:

✅ **Actor start** – $0.006

✅ **Dataset item** – $0.012

### Frequently Asked Questions

**Q: How much does it cost?**
A: See our [Pricing section](#-pricing) above for complete details on our transparent pay-per-event model.

**Q: How accurate is the data?**
A: We collect data directly from James Edition's website in real-time, ensuring the most up-to-date and accurate information available.

**Q: Can I schedule regular runs?**
A: Yes! Use the Apify API to schedule daily, weekly, or monthly runs automatically. Perfect for ongoing market monitoring.

**Q: What if I need help?**
A: Our support team is available 24/7. Contact us through the Apify platform.

**Q: Is my data secure?**
A: Absolutely. All data is encrypted in transit and at rest. We never share your data with third parties.

### Integrate James Edition Scraper with any app and automate your workflow

Last but not least, James Edition Scraper can be connected with almost any cloud service or web app thanks to [integrations](https://apify.com/integrations) on the Apify platform.

These includes:

- [Make](https://docs.apify.com/platform/integrations/make)
- [Zapier](https://docs.apify.com/platform/integrations/zapier)
- [Slack](https://docs.apify.com/platform/integrations/slack)
- [Airbyte](https://docs.apify.com/platform/integrations/airbyte)
- [GitHub](https://docs.apify.com/platform/integrations/github)
- [Google Drive](https://docs.apify.com/platform/integrations/drive)
- and [much more](https://docs.apify.com/platform/integrations).

Alternatively, you can use webhooks to carry out an action whenever an event occurs, e.g. get a notification whenever James Edition Scraper successfully finishes a run.

**Need Help?** Our support team is here to help you get the most out of this tool.

# Actor input Schema

## `startUrl` (type: `string`):

Use James Edition search URLs to target specific properties. Examples:
• All properties: https://www.jamesedition.com/real\_estate/all
• With filters: https://www.jamesedition.com/real\_estate/all?bedrooms\_from=5\&eur\_price\_cents\_from=144745375\&order=recent
• Specific location: https://www.jamesedition.com/real\_estate/portugal

Add filters on James Edition's search page, then copy the URL here. Leave empty to scrape all available properties.

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

Set the maximum number of properties to collect. Free users are limited to 100 items maximum. Leave empty to collect all available properties without any limit (paying users only).

## Actor input object example

```json
{
  "startUrl": "https://www.jamesedition.com/real_estate/all?bedrooms_from=3&eur_price_cents_from=300461912&eur_price_cents_to=343785634",
  "maxItems": 50
}
```

# 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("parseforge/james-edition-real-estate-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 = {}

# Run the Actor and wait for it to finish
run = client.actor("parseforge/james-edition-real-estate-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 '{}' |
apify call parseforge/james-edition-real-estate-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=parseforge/james-edition-real-estate-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "James Edition Real Estate Scraper",
        "description": "Effortlessly collect detailed luxury real estate listings from James Edition with our advanced data collection tool. Designed for real estate professionals, investors, and market researchers, this tool pulls comprehensive listing data from world's premier luxury real estate marketplace.",
        "version": "1.0",
        "x-build-id": "oExuIrrDibj7GRM7b"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/parseforge~james-edition-real-estate-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-parseforge-james-edition-real-estate-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/parseforge~james-edition-real-estate-scraper/runs": {
            "post": {
                "operationId": "runs-sync-parseforge-james-edition-real-estate-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/parseforge~james-edition-real-estate-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-parseforge-james-edition-real-estate-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "startUrl": {
                        "title": "Start URL",
                        "type": "string",
                        "description": "Use James Edition search URLs to target specific properties. Examples:\n• All properties: https://www.jamesedition.com/real_estate/all\n• With filters: https://www.jamesedition.com/real_estate/all?bedrooms_from=5&eur_price_cents_from=144745375&order=recent\n• Specific location: https://www.jamesedition.com/real_estate/portugal\n\nAdd filters on James Edition's search page, then copy the URL here. Leave empty to scrape all available properties."
                    },
                    "maxItems": {
                        "title": "Max Items",
                        "minimum": 1,
                        "maximum": 1000000,
                        "type": "integer",
                        "description": "Set the maximum number of properties to collect. Free users are limited to 100 items maximum. Leave empty to collect all available properties without any limit (paying users only)."
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
