# Pornhub Scraper (search) (`spider.engine/pornhub-search-scraper`)

Designed to extract video light metadata from Pornhub search queries. This scraper enables users to gather structured data, such as video titles, durations, view counts, ratings, and uploader details, making it ideal for content analysis, trend monitoring, and research purposes.

- **URL**: https://beta-securitybyobscurity.apify.com/spider.engine/pornhub-search-scraper.md
- **Developed by:** [Spider Engine](https://beta-securitybyobscurity.apify.com/spider.engine) (community)
- **Categories:** Automation, Social media, Videos
- **Stats:** 76 total users, 8 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

$0.90 / 1,000 videos

This Actor is paid per result. You are not charged for the Apify platform usage, but only a fixed price for dataset items the Actor outputs.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-result

# README

## Pornhub Search Scraper

### Overview

The **Pornhub Search Scraper** is a tool designed to extract video metadata from **Pornhub search queries**. This scraper enables users to gather structured data, such as video titles, durations, view counts, ratings, and uploader details, making it ideal for content analysis, trend monitoring, and research purposes.

### Features

With the Pornhub Search Scraper, you can:

- **Search by Query**: Provide search keywords to retrieve videos related to a specific topic.
- **Choose Export Format**: Select JSON, CSV, or HTML for the output.
- **Use Proxies**: Optionally route requests through a proxy to avoid rate limits.

### How to Use

#### 1. Input Parameters

To configure the scraper, use the following options:

```json
{
    "searchQuery": ["blonde"],
    "exportFormat": "JSON",
    "proxy": {
        "useApifyProxy": true
    }
}
```

##### Input Fields Explained:

| Parameter             | Type    | Description                                            |
| --------------------- | ------- | ------------------------------------------------------ |
| `searchQuery`         | array   | List of search keywords to find videos.                |
| `exportFormat`        | string  | Output format: `JSON`, `CSV`, or `HTML`.               |
| `proxy.useApifyProxy` | boolean | If `true`, the scraper will use Apify's proxy service. |

#### 2. Running the Scraper

##### Case 1: Using a Full Search Query URL

- Provide a complete **Pornhub search URL** instead of keywords.
- Example input:
  ```json
  {
      "searchQuery": ["https://www.pornhub.com/video/search?search=blonde"],
      "exportFormat": "JSON",
      "proxy": {
          "useApifyProxy": true
      }
  }
  ```
- The scraper will extract search results from the provided URL without modifications.

##### Case 2: Using Keywords

- Enter one or more **keywords** as the search query.
- Example input:
  ```json
  {
      "searchQuery": ["blonde"],
      "exportFormat": "JSON",
      "proxy": {
          "useApifyProxy": false
      }
  }
  ```
- The scraper will generate a search URL based on the given keywords and retrieve the relevant video results.

#### 3. Output Format

The scraper provides structured video data, such as:

```json
{
    "input_url": "https://www.pornhub.com/search?search=blonde",
    "url": "https://www.pornhub.com/view_video.php?viewkey=64fe7e5bd5f32",
    "data_video_id": "439173361",
    "title": "Big-tailed blonde gets excited at the club",
    "image": {
        "href": "https://ei.phncdn.com/videos/.../image.jpg",
        "title": "Video thumbnail"
    },
    "duration": "5:04",
    "count": "28.2M",
    "rating_percent": 83,
    "uploaded": "55 years ago",
    "user_info": {
        "username": "Deny Barbie",
        "user_url": "https://www.pornhub.com/model/deny-barbie"
    }
}
```

### Use Cases

- **SEO & Content Research**: Analyze trending keywords and video metadata.
- **Market Analysis**: Gather insights into popular videos and content trends.
- **Data Science**: Use structured video data for machine learning or analytics.
- **Academic Research**: Study online content trends and user engagement.

### Disclaimer

This scraper is intended for lawful and ethical use. Users must comply with Pornhub's terms of service and applicable laws regarding data collection. The developers do not take responsibility for misuse of this tool.

### Contributions

Contributions and feature suggestions are welcome! Open an issue if you encounter bugs or need enhancements.

# Actor input Schema

## `searchQuery` (type: `array`):

Search query

## `exportFormat` (type: `string`):

Format of the exported dataset.

## `proxy` (type: `object`):

Select proxies to be used by your crawler.

## Actor input object example

```json
{
  "searchQuery": [
    "blonde"
  ],
  "exportFormat": "JSON",
  "proxy": {
    "useApifyProxy": true
  }
}
```

# 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 = {
    "searchQuery": [
        "blonde"
    ],
    "proxy": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("spider.engine/pornhub-search-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 = {
    "searchQuery": ["blonde"],
    "proxy": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("spider.engine/pornhub-search-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 '{
  "searchQuery": [
    "blonde"
  ],
  "proxy": {
    "useApifyProxy": true
  }
}' |
apify call spider.engine/pornhub-search-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=spider.engine/pornhub-search-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Pornhub Scraper (search)",
        "description": "Designed to extract video light metadata from Pornhub search queries. This scraper enables users to gather structured data, such as video titles, durations, view counts, ratings, and uploader details, making it ideal for content analysis, trend monitoring, and research purposes.",
        "version": "0.0",
        "x-build-id": "6VWZ1BH91RLdmrl2F"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/spider.engine~pornhub-search-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-spider.engine-pornhub-search-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/spider.engine~pornhub-search-scraper/runs": {
            "post": {
                "operationId": "runs-sync-spider.engine-pornhub-search-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/spider.engine~pornhub-search-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-spider.engine-pornhub-search-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",
                "required": [
                    "searchQuery"
                ],
                "properties": {
                    "searchQuery": {
                        "title": "Search Query",
                        "type": "array",
                        "description": "Search query",
                        "items": {
                            "type": "string"
                        }
                    },
                    "exportFormat": {
                        "title": "Export format",
                        "enum": [
                            "HTML",
                            "JSON",
                            "CSV"
                        ],
                        "type": "string",
                        "description": "Format of the exported dataset.",
                        "default": "JSON"
                    },
                    "proxy": {
                        "title": "Proxy Configuration",
                        "type": "object",
                        "description": "Select proxies to be used by your crawler."
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
