# Pornhub, XVideos, XNXX & Chaturbate Scraper: Video & Cam Data (`recordsdata/adult-video-cam-scraper`) Actor

Scrape Pornhub, XVideos, XNXX and Chaturbate in one run: videos, video details, channels, pornstars, categories, keyword suggestions, live cam rooms and a live market snapshot. 80 fields, metadata only, no login. Export CSV, Excel, JSON or XML.

- **URL**: https://apify.com/recordsdata/adult-video-cam-scraper.md
- **Developed by:** [RecordsData](https://apify.com/recordsdata) (community)
- **Categories:** Videos, Social media
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $20.00 / 1,000 video search 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?

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

![RecordsData](https://api.apify.com/v2/key-value-stores/AAm3a1h3Z9nYfrvh9/records/banner?v=3)

## 🎬 Pornhub, XVideos, XNXX & Chaturbate Scraper - Video, Channel, Pornstar and Live Cam Data - RecordsData

> **Quick answer:** This Actor exports public metadata from Pornhub, XVideos, XNXX and Chaturbate to CSV, Excel, JSON or XML. It returns nine record types: videos, video details, channels, pornstars, categories, keyword suggestions, live cam rooms, room details and a live market snapshot. No login, cookies or API key are needed.

> 🚀 **Export adult video and live cam data in seconds.** One Actor, four sites, 9 record types and 80 fields. Mix sites in a single run, filter by sort, period, length and quality, and get only what changed since your last run.

**Pornhub, XVideos, XNXX & Chaturbate Scraper** reads the public pages and public room list of the four biggest adult video and live cam sites and turns them into clean, flat rows. It is built for market research, trend tracking and competitive analysis of the adult video and live cam industry. It returns **metadata only**: titles, counts, ranks, tags and public links. It never returns video files, streams, preview clips or comments.

Coverage in numbers: **4 sites**, **9 record types**, **80 output fields**, **10 ready-made dataset views**. Videos come with duration, views, rating and uploader. Channels and pornstars come with subscribers, video counts, total views and ranks. Live rooms come with viewers, followers, tags, token prices and start time. Every field a site does not offer is marked `N/A`, and every value a site withholds is marked `Not Disclosed`, so a column never silently turns empty.

| 🎯 Target Audience | 💡 Primary Use Cases |
|---|---|
| Market and industry analysts | Track which categories, tags and channels grow |
| Affiliate and traffic marketers | Find high-view topics and keywords to target |
| Studios, agencies and creators | Benchmark channels and pornstar rankings |
| Data and BI teams | Feed dashboards with daily rankings and live viewer counts |
| Academic and media researchers | Study platform trends with reproducible exports |
| Cam and creator-economy analysts | Measure live market size, top tags and room prices in tokens |

### 📋 What the Pornhub, XVideos, XNXX & Chaturbate Scraper does

Choose one **What to collect** mode per run. Each mode returns one record type.

| Mode | Sites | Each row holds |
|---|---|---|
| Videos | Pornhub, XVideos, XNXX | Title, link, thumbnail, duration, views, rating, uploader, upload date |
| Video details | Pornhub, XVideos, XNXX | Videos plus likes, dislikes, comments count, categories, tags, performers |
| Channels and studios | Pornhub, XVideos | Rank, subscribers, video count, total views, country, badges |
| Pornstars and models | Pornhub, XVideos, XNXX | Rank, weekly, monthly and yearly ranks, subscribers, views, badges |
| Categories and tags | All four | Name, link, video count, and on Chaturbate rooms online and viewers |
| Search suggestions | XVideos, XNXX | Keyword idea, position and number of results |
| Live cam rooms | Chaturbate | Viewers, followers, tags, subject, prices in tokens, start time |
| Live cam room details | Chaturbate | Live room fields plus languages, fan club, room status, last broadcast |
| Live cam market snapshot | Chaturbate | Rooms online, viewers in the top 100, top room, top tags per segment |

You can search by keyword, paste links from the sites, or leave both empty to read what each site ranks first.

> 💡 **Why it matters:** the same four sites publish ranks, counts and live viewer numbers every day, but only as web pages. This Actor turns them into a dataset you can sort, chart, schedule and compare over time.

### 📊 Output

Every row starts with `recordType` and `site`, then the thumbnail link, the identity fields, the core numbers, lists last, and ends with `scrapedAt` and `error`. Rows of one record type always carry the same keys in the same order.

| Record type | Main fields |
|---|---|
| 🎞️ video | `videoId`, `title`, `url`, `durationSeconds`, `views`, `ratingPercent`, `uploaderName`, `publishedAt`, `rank`, `sortBy` |
| 🔍 video-detail | video fields plus `likes`, `dislikes`, `commentsCount`, `categories`, `tags`, `performers` |
| 📺 channel | `name`, `slug`, `rank`, `subscribers`, `videosCount`, `totalViews`, `profileViews`, `country`, `verified`, `awardWinner` |
| ⭐ pornstar | `name`, `rank`, `weeklyRank`, `monthlyRank`, `yearlyRank`, `gender`, `subscribers`, `videosCount`, `totalViews`, `careerStatus` |
| 🏷️ category | `name`, `slug`, `url`, `videosCount`, `roomsOnline`, `viewers` |
| 💡 keyword-suggestion | `suggestion`, `seedKeyword`, `position`, `resultsCount` |
| 🔴 live-room | `username`, `gender`, `viewers`, `followers`, `country`, `showType`, `privatePriceTokens`, `startedAt`, `onlineMinutes`, `subject`, `tags` |
| 🔴 live-room-detail | live-room fields plus `languages`, `hasFanClub`, `fanClubPriceTokens`, `roomStatus`, `lastBroadcastAt` |
| 📈 live-snapshot | `segment`, `roomsOnline`, `roomsTotal`, `viewersInTop100`, `topRoom`, `topRoomViewers`, `topTags` |

Three real records from a cloud run (shortened where marked):

**Video (Pornhub, search "massage")**

```json
{
  "recordType": "video",
  "site": "Pornhub",
  "imageUrl": "https://ei.phncdn.com/videos/202405/02/451918011/original/(m=eafTGgaaaa)(mh=D6i_p4FXhAeUL4Q-)9.jpg",
  "videoId": "451918011",
  "title": "Brunette massage gun on TikTok live",
  "url": "https://www.pornhub.com/view_video.php?viewkey=6633ebb001e22",
  "searchQuery": "massage",
  "rank": 1,
  "page": 1,
  "source": "search",
  "sortBy": "relevance",
  "durationSeconds": 127,
  "durationText": "2:07",
  "quality": "N/A",
  "views": 2700000,
  "viewsText": "2.7M",
  "ratingPercent": "N/A",
  "uploaderName": "Running Princess",
  "uploaderUrl": "https://www.pornhub.com/model/running-princess",
  "uploaderType": "pornstar",
  "publishedAt": "2024-05-02T00:00:00.000Z",
  "publishedText": "2 years ago",
  "scrapedAt": "2026-10-16T04:09:35.269Z",
  "error": null
}
```

**Channel (XVideos)**

```json
{
  "recordType": "channel",
  "site": "XVideos",
  "imageUrl": "https://thumb-cdn77.xvideos-cdn.com/4b4cabb5-eb27-4703-880d-1a2b277e4014/0/xv_30_t.jpg",
  "id": "N/A",
  "slug": "puretabooofficial",
  "name": "Pure Taboo Official",
  "url": "https://www.xvideos.com/puretabooofficial",
  "rank": 1,
  "type": "channel",
  "country": "Canada",
  "subscribers": 1418436,
  "videosCount": 879,
  "totalViews": 3675017158,
  "profileViews": 97503508,
  "verified": "N/A",
  "awardWinner": "N/A",
  "signedUp": "April 23, 2018",
  "lastActivity": "today",
  "description": "N/A",
  "scrapedAt": "2026-10-16T04:11:00.204Z",
  "error": null
}
```

**Live market snapshot (Chaturbate, topTags shortened to 3 of 15)**

```json
{
  "recordType": "live-snapshot",
  "site": "Chaturbate",
  "segment": "All rooms",
  "url": "https://chaturbate.com/api/ts/roomlist/room-list/?limit=100",
  "source": "room-list API",
  "roomsOnline": 7558,
  "roomsTotal": 8681,
  "viewersInTop100": 765591,
  "topRoom": "emyii",
  "topRoomViewers": 53530,
  "topTags": [
    { "tag": "bigboobs", "rooms": 29, "viewers": 419713 },
    { "tag": "18", "rooms": 29, "viewers": 305542 },
    { "tag": "new", "rooms": 28, "viewers": 254386 }
  ],
  "scrapedAt": "2026-10-16T04:14:19.758Z",
  "error": null
}
```

Export the dataset as CSV, Excel, JSON, XML or HTML from the Storage tab, or read it through the Apify API.

### ✨ Why choose this Actor

- **Four sites, one run.** Mix Pornhub, XVideos, XNXX and Chaturbate in a single search and get one consistent schema.
- **Nine record types.** Videos, details, channels, pornstars, categories, suggestions, live rooms, room details and market snapshots.
- **Honest columns.** `N/A` means the site does not offer the value. `Not Disclosed` means the site withheld it for that record. No literal `null`, no silent gaps.
- **Filters that match each site.** Sort, time period, length, quality and producer type are applied where the site allows them (quality works on XVideos and XNXX, producer type on Pornhub rankings), and each row states the sort that was really used.
- **Monitor mode.** Turn on **Only new records** and scheduled runs return just what changed since the last run, and you are not charged for skipped records.
- **Fast and light.** Plain HTTP requests, no browser. Small runs finish in a few seconds on 256 MB.
- **Respects the sites.** The Actor reads each site's robots.txt and skips what it disallows.
- **Built-in content policy.** Search terms that refer to minors are refused, and records that mention them are dropped before delivery.

### 📈 How it compares to alternatives

| | This Actor | One scraper per site |
|---|---|---|
| Sites in one run | 4 | 1 |
| Record types | 9 | Usually videos only |
| Live cam data | Rooms, details and market snapshot | Rarely included |
| Missing values | `N/A` and `Not Disclosed` markers | Empty cells |
| Scheduled change tracking | Built in | Build it yourself |

### 🚀 How to use

1. Create a free account at [console.apify.com](https://console.apify.com). New accounts include free monthly credit.
2. Open the Actor and pick **What to collect**, for example Videos.
3. Select the sites. Leave the list empty to use all four.
4. Add search terms, or paste links copied from the sites, or leave both empty to read the site rankings.
5. Set **Max Items**. Free accounts return up to 10 rows as a preview. Paid accounts can raise the limit.
6. Press **Start**, then download the results from the **Output** tab as CSV, Excel, JSON or XML.

Minimal example input:

```json
{
  "mode": "videos",
  "queries": ["massage"],
  "sites": ["xvideos", "xnxx"],
  "sortBy": "views",
  "maxItems": 100
}
```

### 💼 Business use cases

#### Trend and market research

Run the categories and pornstars modes every week and store the ranks. Compare the movement of tags, channels and performers over months.

#### Content and keyword strategy

Use the suggestions mode with a seed word, then the videos mode sorted by views, to see which topics draw the most attention before you plan a release.

#### Competitive benchmarking

Pull channel rows for the studios you compete with: subscribers, video counts, total views and last activity side by side.

#### Live cam market analytics

Schedule the live snapshot mode every hour. Track rooms online, viewers in the top 100 and the most watched tags by segment, then chart demand by time of day.

### 🔌 Automating the scraper

Schedule runs from the Apify Console, trigger them with the API, and send results to the tools you already use:

- **Make and Zapier:** start a run on a timer and push each new row to a spreadsheet, a database or Slack.
- **Google Sheets and Google Drive:** export every run as CSV or Excel automatically.
- **Airbyte and data warehouses:** load the dataset into BigQuery, Snowflake or PostgreSQL.
- **Webhooks:** call your own endpoint when a run finishes.

Pair scheduled runs with **Only new records** to get a daily change feed instead of a full export.

### 🌟 Beyond business use cases

- **Research:** study platform growth, tag vocabulary and audience size with reproducible data.
- **Personal:** build a private dashboard of the rankings you follow.
- **Non-profit and media:** back an article or a report on the industry with numbers that anyone can re-run.
- **Experimentation:** test recommendation or classification models on public titles and tags.

### 🤖 Ask an AI assistant about this scraper

AI agents can call this Actor through the Apify MCP server at `https://mcp.apify.com?tools=RecordsData/adult-video-cam-scraper`. Example prompt:

> Use the Pornhub, XVideos, XNXX & Chaturbate Scraper to list the 20 most viewed videos for "yoga" on XVideos and XNXX, then take the live market snapshot for Chaturbate and tell me which tags have the most viewers right now.

### ❓ Frequently Asked Questions

**❓ What does the Pornhub, XVideos, XNXX & Chaturbate Scraper do?**
It exports public metadata from the four sites: videos, video details, channels, pornstars, categories, keyword suggestions, live cam rooms, room details and a live market snapshot.

**❓ Do I need a login, cookies or an API key?**
No. The Actor reads public pages only. You need an Apify account to run it.

**❓ Does it download videos or streams?**
No. It never returns video files, stream or preview links, or comments. It returns text, numbers and public page links. Thumbnail links are plain text and point to the site image servers.

**❓ Can I scrape Pornhub videos by keyword?**
Yes. Choose Videos, select Pornhub, add your keyword to Search terms and start the run. Pornhub's robots.txt allows only its default search order, so keyword searches on Pornhub return best match for up to 10 result pages, and the Actor keeps the video length filter by checking each row. Leave Search terms empty to get Pornhub's own rankings with the newest, most viewed or top rated sort, a time period and a professional or homemade filter.

**❓ Can I scrape Chaturbate live rooms and viewer counts?**
Yes. The live modes read the public room list: viewers, followers, tags, subject, token prices and start time. Filter by gender category, region, tag and minimum viewers.

**❓ How many results can I get?**
It depends on the site and on the search term. The Actor reads up to 80 result pages per search: in tests, XNXX "massage" returned 2,866 videos and XVideos "yoga" returned 1,649 videos. XVideos thins out later pages for some terms ("massage" ended at 56 videos), so use several specific terms for deep coverage. Pornhub keyword searches stop at 10 pages (435 videos for "massage"). The Pornhub channels list is a ranking of 36 channels without paging. Chaturbate tag statistics are computed from a sample of up to 5 pages of 100 live rooms, so they describe the busiest part of the market.

**❓ Why are some fields marked N/A or Not Disclosed?**
`N/A` means the site does not offer that value for that record type. `Not Disclosed` means the site offers it but withheld it for that record, for example a performer with no public subscriber count.

**❓ Why do some thumbnail links stop working?**
Some Pornhub thumbnails are signed links that expire after about a day. Download the images you need soon after the run, or turn the thumbnail column off.

**❓ Does it work for XNXX channels?**
XNXX has no channel index, so channels mode covers Pornhub and XVideos. Paste an XNXX maker or pornstar link to read its profile or its videos.

**❓ Are keyword suggestions available for Pornhub?**
No. Pornhub does not allow automated access to its autocomplete, so suggestions cover XVideos and XNXX.

**❓ How do I get only new records on a schedule?**
Turn on **Only new records**, schedule the run, and each run returns only records not seen in the earlier runs of the same search.

**❓ Is it legal to scrape these sites?**
The Actor reads publicly available pages and does not log in. The sites' terms of use limit automated access, so you are responsible for using the data in line with those terms and local law. The Actor is for adults and lawful use only.

**❓ How do I use it with the API or Python?**
Call the Actor with the Apify API or the Apify client for JavaScript or Python, pass the same JSON as in the example above, and read the dataset items when the run ends.

### 🔌 Integrate with any app

Connect the dataset to Make, Zapier, n8n, Google Sheets, Airbyte, Slack or any app that accepts webhooks. See the [Apify integrations](https://apify.com/integrations) catalog.

### 🔗 Recommended Actors

> 💡 **Pro Tip:** browse the complete [RecordsData collection](https://apify.com/RecordsData) for more data scrapers.

**🆘 Need Help?** Open the Issues tab or write to contact.punkrecordsdata@gmail.com.

> **⚠️ Disclaimer:** this is an independent tool and is not affiliated with Pornhub, XVideos, XNXX or Chaturbate. It reads only publicly available information and returns metadata, never media. The sites' terms of use limit automated access, so use the data lawfully and at your own responsibility. For adults only.

# Actor input Schema

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

The kind of record to return. Videos: search results and listings. Video details: one full page per video (likes, tags, performers). Channels, Pornstars and Categories: the site rankings and tag lists. Search suggestions: keyword ideas from XVideos and XNXX. The three live modes read Chaturbate: the rooms on air now, one detailed row per room, or one market snapshot per segment.

## `sites` (type: `array`):

Sites to read. Leave empty to use all four. Live modes only use Chaturbate. Search suggestions only use XVideos and XNXX. Channels are not available on XNXX.

## `queries` (type: `array`):

Keywords to search, one search per term and site. In the suggestion modes each term is the seed word. In the live modes a term is a keyword filter on room titles and tags. For the pornstars, channels and categories modes a term filters the list by name. Leave empty to read the site rankings. Terms that refer to minors are refused and skipped.

## `startUrls` (type: `array`):

Links copied from the sites: a search or category page, a video, a channel, a pornstar or model page, or a Chaturbate room or tag page. A video link returns that video. A channel or pornstar link returns its uploads in the video modes and its profile in every other mode. Listing links return their videos. Index links (channels, pornstars, tags) return that list.

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

Maximum number of rows to return across all sites and terms. Free users are limited to 10 rows (preview). Paid users can raise it up to 1,000,000.

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

Order of the video results. Best match keeps the site default. Newest, most viewed and top rated work on XVideos, and on Pornhub only when no search terms are given (its robots.txt allows no other sorted search, so Pornhub searches return best match). XNXX only supports best match and most viewed. Longest works on XVideos only. Each row states the sort that was really applied.

## `period` (type: `string`):

Period for the most viewed and top rated sorts, and for the video upload date. Pornhub (without search terms): today, week, month, year, all time. XVideos: today, week, month, 3 months, 6 months. XNXX: month, year.

## `duration` (type: `string`):

Keep only videos of this length. Works on XVideos and XNXX searches; on Pornhub searches the length is checked on the rows that come back.

## `quality` (type: `string`):

Keep only HD or Full HD videos. Works on XVideos and XNXX.

## `producer` (type: `string`):

Professional studios or homemade content. Works on Pornhub when no search terms are given.

## `liveGenders` (type: `array`):

Keep only rooms of these categories. Leave empty for all. The market snapshot mode always returns every category on its own.

## `liveRegions` (type: `array`):

Keep only rooms from these regions. Leave empty for all.

## `liveTags` (type: `array`):

Room tags to read, one search per tag (for example latina or lovense), without the # sign. Leave empty for the whole room list. In the market snapshot mode each tag becomes its own snapshot row.

## `minViewers` (type: `integer`):

Skip rooms with fewer viewers than this number at the time of the run. 0 keeps every room.

## `enrichProfiles` (type: `boolean`):

In the channel and pornstar modes, open every profile page to add exact totals, subscribers, country, description and badges. Turn it off for a faster run that only returns the list columns.

## `expandSuggestions` (type: `boolean`):

In the suggestion mode, repeat each seed word followed by every letter from a to z to collect many more keyword ideas. One extra request per letter.

## `includeThumbnails` (type: `boolean`):

Add the thumbnail image link of each record as the first column. Turn it off for leaner exports. The links point to the site image servers and some expire after a day.

## `onlyNew` (type: `boolean`):

Only new records: skip every record this same search already returned in an earlier run, so scheduled runs return just what changed and you are not charged for skipped records. Max Items then means N new records. Off by default.

## `stateKey` (type: `string`):

Optional label for the monitor state. Use a different label to run several independent monitors with identical filters. Leave empty to share state between runs of the same search.

## `resetSeen` (type: `boolean`):

Clear the stored list of already-seen records for this search (and Monitor name) before the run starts, so everything counts as new again.

## Actor input object example

```json
{
  "mode": "videos",
  "sites": [
    "pornhub",
    "xvideos",
    "xnxx",
    "chaturbate"
  ],
  "queries": [
    "massage"
  ],
  "maxItems": 10,
  "sortBy": "relevance",
  "period": "alltime",
  "duration": "any",
  "quality": "any",
  "producer": "any",
  "liveGenders": [],
  "liveRegions": [],
  "minViewers": 0,
  "enrichProfiles": true,
  "expandSuggestions": false,
  "includeThumbnails": true,
  "onlyNew": false,
  "stateKey": "",
  "resetSeen": false
}
```

# Actor output Schema

## `videos` (type: `string`):

One row per video: title, link, duration, views, rating, uploader and thumbnail.

## `videoDetails` (type: `string`):

One row per video page: likes, dislikes, comments, categories, tags and performers.

## `channels` (type: `string`):

One row per channel or studio: subscribers, videos, total views, badges and description.

## `pornstars` (type: `string`):

One row per pornstar or model: ranks, audience numbers, badges and activity.

## `categories` (type: `string`):

One row per category or tag: link, video count and, on Chaturbate, rooms online and viewers.

## `suggestions` (type: `string`):

One row per keyword idea with its position and result count.

## `liveRooms` (type: `string`):

One row per live Chaturbate room: viewers, followers, tags, prices in tokens and start time.

## `liveRoomDetails` (type: `string`):

Live room rows plus languages, fan club, room status and last broadcast.

## `liveSnapshot` (type: `string`):

One row per segment: rooms online, viewers in the top 100, top room and top tags.

## `fullData` (type: `string`):

Complete dataset with all 80 fields of every record type

# 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 = {
    "queries": [
        "massage"
    ],
    "maxItems": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("recordsdata/adult-video-cam-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 = {
    "queries": ["massage"],
    "maxItems": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("recordsdata/adult-video-cam-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 '{
  "queries": [
    "massage"
  ],
  "maxItems": 10
}' |
apify call recordsdata/adult-video-cam-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,recordsdata/adult-video-cam-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/7Oso6lLWaB9Z7sRnB/builds/eAEOggbdySMFl7XMo/openapi.json
