# My Actor (`fortuitous_pirate/my-actor`) Actor

My Actor. Structured data export for lead generation, enrichment, and competitive research.

- **URL**: https://apify.com/fortuitous\_pirate/my-actor.md
- **Developed by:** [Fortuitous Pirate](https://apify.com/fortuitous_pirate) (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 $5.00 / 1,000 results

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/actors/running/actors-in-store.md#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

## Airbnb Scraper

Scrape Airbnb listings with comprehensive data including prices, ratings, reviews, availability, and property details. Perfect for market research, price monitoring, and competitive analysis.

### Features

- **Location Search**: Search any city, neighborhood, or region worldwide
- **Direct URL Scraping**: Scrape specific listings by URL
- **Rich Data Extraction**: Prices, ratings, reviews, images, coordinates, and more
- **Flexible Filters**: Filter by price, property type, bedrooms, amenities
- **Date-Based Pricing**: Get accurate prices for specific check-in/check-out dates
- **Guest Configuration**: Specify adults, children, infants, and pets

### Output Data

Each listing includes:

| Field | Description |
|-------|-------------|
| `id` | Airbnb listing ID |
| `name` | Property title |
| `subtitle` | Short description |
| `url` | Direct link to listing |
| `price.total` | Total price for stay |
| `price.perNight` | Nightly rate |
| `price.currency` | Currency code |
| `rating` | Average rating (1-5) |
| `reviewCount` | Number of reviews |
| `bedrooms` | Number of bedrooms |
| `beds` | Number of beds |
| `propertyType` | Type (Apartment, House, etc.) |
| `location.latitude` | GPS latitude |
| `location.longitude` | GPS longitude |
| `images` | Array of image URLs |
| `thumbnailUrl` | Main image URL |
| `badges` | Guest favorite, Superhost, etc. |
| `isGuestFavorite` | Boolean for top-rated listings |
| `searchLocation` | Search location used |
| `scrapedAt` | Timestamp of scrape |

### Example Output

```json
{
  "id": "13998223",
  "name": "Apartment in New York",
  "subtitle": "Cozy Manhattan Studio",
  "url": "https://www.airbnb.com/rooms/13998223",
  "price": {
    "total": 1376,
    "perNight": 275.02,
    "currency": "USD",
    "qualifier": "for 5 nights"
  },
  "rating": 4.92,
  "reviewCount": 193,
  "bedrooms": 1,
  "beds": 1,
  "propertyType": "Apartment",
  "location": {
    "latitude": 40.7589,
    "longitude": -73.9851
  },
  "images": [
    {
      "id": "1378775249",
      "url": "https://a0.muscache.com/im/pictures/...",
      "caption": null
    }
  ],
  "thumbnailUrl": "https://a0.muscache.com/im/pictures/...",
  "badges": [
    {
      "type": "TOP_X_GUEST_FAVORITE",
      "text": "Guest favorite"
    }
  ],
  "isGuestFavorite": true,
  "searchLocation": "New York",
  "scrapedAt": "2026-01-26T18:30:00.000Z"
}
```

### Input Parameters

#### Search Configuration

- **locations**: List of locations to search (e.g., "New York", "Paris, France")
- **listingUrls**: Direct URLs to specific Airbnb listings
- **maxListings**: Maximum listings per location (default: 50, max: 1000)

#### Date Filters

- **checkIn**: Check-in date (YYYY-MM-DD)
- **checkOut**: Check-out date (YYYY-MM-DD)

#### Guest Configuration

- **adults**: Number of adults (default: 1)
- **children**: Number of children (default: 0)
- **infants**: Number of infants (default: 0)
- **pets**: Number of pets (default: 0)

#### Property Filters

- **propertyType**: entire\_home, private\_room, shared\_room, hotel\_room
- **minPrice** / **maxPrice**: Price range per night (USD)
- **minBedrooms**: Minimum number of bedrooms
- **minBeds**: Minimum number of beds
- **minBathrooms**: Minimum number of bathrooms
- **instantBook**: Only instant bookable listings
- **superhost**: Only Superhost listings

#### Advanced Options

- **includeReviews**: Scrape reviews (slower)
- **includeCalendar**: Scrape availability calendar (slower)
- **proxyConfiguration**: Proxy settings (residential recommended)

### Usage Examples

#### Search Multiple Locations

```json
{
  "locations": ["New York", "Los Angeles", "Miami"],
  "maxListings": 100,
  "checkIn": "2026-03-01",
  "checkOut": "2026-03-05"
}
```

#### Filter by Property Type and Price

```json
{
  "locations": ["Paris, France"],
  "propertyType": "entire_home",
  "minPrice": 100,
  "maxPrice": 300,
  "minBedrooms": 2
}
```

#### Scrape Specific Listings

```json
{
  "listingUrls": [
    "https://www.airbnb.com/rooms/12345",
    "https://www.airbnb.com/rooms/67890"
  ]
}
```

### Pricing

This actor uses pay-per-result pricing:

- **$0.005 per listing** scraped

Example costs:

- 100 listings = $0.50
- 1,000 listings = $5.00
- 10,000 listings = $50.00

### Tips for Best Results

1. **Use residential proxies** for highest success rate
2. **Set specific dates** to get accurate pricing
3. **Start with smaller limits** to test your search parameters
4. **Use filters** to narrow down results to relevant listings

### Use Cases

- **Market Research**: Analyze short-term rental markets in any location
- **Price Monitoring**: Track competitor pricing over time
- **Investment Analysis**: Evaluate potential rental income for properties
- **Travel Planning**: Compare options across multiple destinations
- **Competitive Analysis**: Monitor listings in your market area

### Legal Notice

This actor is intended for legitimate market research and data analysis purposes. Users are responsible for ensuring their use complies with Airbnb's Terms of Service and applicable laws.

### Support

For issues or feature requests, please open an issue on the repository or contact support.

# Actor input Schema

## `locations` (type: `array`):

List of locations to search for Airbnb listings (e.g., 'New York', 'Paris, France', 'Tokyo')

## `listingUrls` (type: `array`):

Direct URLs to specific Airbnb listings to scrape (e.g., https://www.airbnb.com/rooms/12345)

## `maxListings` (type: `integer`):

Maximum number of listings to scrape per location. Default is 50.

## `checkIn` (type: `string`):

Check-in date for price search (YYYY-MM-DD format). Leave empty for flexible dates.

## `checkOut` (type: `string`):

Check-out date for price search (YYYY-MM-DD format). Leave empty for flexible dates.

## `adults` (type: `integer`):

Number of adult guests

## `children` (type: `integer`):

Number of children

## `infants` (type: `integer`):

Number of infants

## `pets` (type: `integer`):

Number of pets

## `propertyType` (type: `string`):

Filter by property type

## `minPrice` (type: `integer`):

Minimum price per night in USD

## `maxPrice` (type: `integer`):

Maximum price per night in USD

## `minBedrooms` (type: `integer`):

Minimum number of bedrooms

## `minBeds` (type: `integer`):

Minimum number of beds

## `minBathrooms` (type: `integer`):

Minimum number of bathrooms

## `instantBook` (type: `boolean`):

Only show listings with instant booking

## `superhost` (type: `boolean`):

Only show listings from Superhosts

## `includeReviews` (type: `boolean`):

Scrape reviews for each listing (slower, additional charges apply)

## `includeCalendar` (type: `boolean`):

Scrape availability calendar for each listing (slower, additional charges apply)

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

Proxy settings for the scraper. Residential proxies recommended for best results.

## Actor input object example

```json
{
  "locations": [
    "New York"
  ],
  "maxListings": 50,
  "adults": 1,
  "children": 0,
  "infants": 0,
  "pets": 0,
  "propertyType": "",
  "instantBook": false,
  "superhost": false,
  "includeReviews": false,
  "includeCalendar": false,
  "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 = {
    "locations": [
        "New York"
    ],
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("fortuitous_pirate/my-actor").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 = {
    "locations": ["New York"],
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("fortuitous_pirate/my-actor").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 '{
  "locations": [
    "New York"
  ],
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call fortuitous_pirate/my-actor --silent --output-dataset

```

## MCP server setup

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

```

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/dFesYzXebcKQ9SZa9/builds/gHaNaODZzzQ6ZM3Pw/openapi.json
