{
  "openapi": "3.0.1",
  "info": {
    "title": "Pornhub Videos Scraper | Search, Tags and Stream Links",
    "description": "Pornhub scraper for videos: search by keyword or paste channel, model or pornstar links and get 20 videos in 24 seconds, 28 fields each. Titles, categories, tags, performers, uploader, views, likes, duration, upload date, thumbnails, preview clips, embed and stream links. No account needed.",
    "version": "1.0",
    "x-build-id": "rKdf3gJRvd0yDtjy9"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/silentflow~pornhub-videos-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-silentflow-pornhub-videos-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/silentflow~pornhub-videos-scraper/runs": {
      "post": {
        "operationId": "runs-sync-silentflow-pornhub-videos-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/silentflow~pornhub-videos-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-silentflow-pornhub-videos-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": {
          "searchQueries": {
            "title": "🔎 Search keywords",
            "type": "array",
            "description": "What you would type in the Pornhub search bar, one keyword per line, for example <code>massage</code> or <code>asmr</code>. Each keyword returns up to <b>Max videos</b> rows, page after page, with the filters below applied.",
            "items": {
              "type": "string"
            }
          },
          "startUrls": {
            "title": "🔗 Pornhub links",
            "type": "array",
            "description": "Paste any mix of Pornhub links:<ul><li>a video: <code>https://www.pornhub.com/view_video.php?viewkey=…</code> (embed links and bare viewkeys work too)</li><li>a creator's whole catalog: <code>/channels/…</code>, <code>/model/…</code>, <code>/pornstar/…</code>, <code>/users/…</code></li><li>a search, category or playlist page, with its own filters</li></ul>Each video link gives its video; each list link gives up to <b>Max videos</b> rows.",
            "items": {
              "type": "string"
            }
          },
          "maxItems": {
            "title": "🔢 Max videos per keyword or link",
            "minimum": 1,
            "type": "integer",
            "description": "How many videos to take from each keyword and each channel, model, pornstar or search link. Pornhub lists videos page after page; set this to what you need, the cost grows with the number of rows. Video links are always read in full.",
            "default": 50
          },
          "sort": {
            "title": "↕️ Sort by",
            "enum": [
              "relevance",
              "newest",
              "most_viewed",
              "top_rated",
              "longest"
            ],
            "type": "string",
            "description": "Order of the keyword results, as on Pornhub.",
            "default": "relevance"
          },
          "period": {
            "title": "📅 Period",
            "enum": [
              "all",
              "week",
              "month",
              "year"
            ],
            "type": "string",
            "description": "Time window for <b>Most viewed</b> and <b>Top rated</b>: this week, this month, this year or all time. Ignored by the other orders.",
            "default": "all"
          },
          "minDuration": {
            "title": "⏱️ Minimum length",
            "enum": [
              "any",
              "10",
              "20",
              "30"
            ],
            "type": "string",
            "description": "Keep videos at least this long.",
            "default": "any"
          },
          "maxDuration": {
            "title": "⏳ Maximum length",
            "enum": [
              "any",
              "10",
              "20",
              "30"
            ],
            "type": "string",
            "description": "Keep videos at most this long.",
            "default": "any"
          },
          "production": {
            "title": "🎬 Production",
            "enum": [
              "all",
              "professional",
              "homemade"
            ],
            "type": "string",
            "description": "Studio productions, amateur uploads, or both.",
            "default": "all"
          },
          "includeDetails": {
            "title": "🧾 Full video details",
            "type": "boolean",
            "description": "On: each video's page is opened for its categories, tags, performers, likes, the uploader's subscribers and video count, and the stream links in every quality. Off: faster, with the listing fields only (title, length, views, uploader, upload date, thumbnail, preview clip).",
            "default": true
          }
        }
      },
      "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}