# Okxxx Video Downloader | How to Download Okxxx Videos (`how-to-download-videos/okxxx-video-downloader-how-to-download-okxxx-videos`) Actor

Okxxx Video Downloader | How to Download Okxxx Videos Apify actor.

- **URL**: https://apify.com/how-to-download-videos/okxxx-video-downloader-how-to-download-okxxx-videos.md
- **Developed by:** [how-to-download-videos](https://apify.com/how-to-download-videos) (community)
- **Categories:** Videos
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

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

## 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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js/docs.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/integrations/mcp.md).

If your project is in a different language, use 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

## Okxxx Video Downloader | How to Download Okxxx Videos

> A browser extension for downloading videos from OK.xxx pages, supporting iframe-based playback handoffs and M3U8/MP4 video streams.

### Get it Here

Get it here: https://serp.ly/okxxx-downloader?via=apify

![Okxxx Downloader](https://apps.serp.co/media/optimized-products/okxxx-downloader-homescreen-adult-fe7ff14af8.webp)

Okxxx Downloader is designed specifically for OK.xxx's clean `/video/<id>/` page structure, where video playback typically occurs through an embedded iframe. This extension helps you capture video streams from these pages and save them as standard MP4 files for offline viewing. The extension focuses on the exact OK.xxx site identity with its short brand name and explicit `.xxx` TLD, keeping messaging distinct from other similarly named platforms.

- Preserves the exact OK.xxx brand identity with the `.xxx` TLD and short site name
- Focuses on the clean `/video/<id>/` page shape for straightforward targeting
- Handles iframe-based playback handoffs where the real video surface is embedded
- Supports M3U8 and MP4 stream formats commonly found on OK.xxx
- Provides multi-domain awareness across ok.xxx, www.ok.xxx, and xiaoshenke.net
- Uses honest verified-target status while acknowledging implementation caveats
- Keeps brand messaging clearly distinct from OK Porn and other OK-labeled sites
### Table of Contents

- [Why Okxxx Downloader](#why-okxxx-downloader)
- [Features](#features)
- [How It Works](#how-it-works)
- [Step-by-Step Tutorial: How to Download Videos from Okxxx](#step-by-step-tutorial-how-to-download-videos-from-okxxx)
- [Supported Formats](#supported-formats)
- [Who It's For](#who-its-for)
- [Common Use Cases](#common-use-cases)
- [Troubleshooting](#troubleshooting)
- [Trial & Access](#trial--access)
- [Installation Instructions](#installation-instructions)
- [FAQ](#faq)
- [Notes](#notes)
- [License](#license)
- [About Okxxx](#about-okxxx)

### Why Okxxx Downloader

Many video sites use embedded player surfaces to deliver their content, making it difficult for users to save videos for offline viewing. OK.xxx follows this pattern with its iframe-based playback handoffs on simple `/video/<id>/` pages, where the real video stream can be hidden behind an embedded player. Without the right tool, you might struggle to locate and capture the actual media file.

Okxxx Downloader addresses this challenge by targeting the specific page structure and playback method used by OK.xxx. It works with the iframe handoff approach, helping you identify and download M3U8 or MP4 streams that appear on the embedded surface. The extension is built around the exact OK.xxx brand identity and page patterns, so you get focused support for this particular platform rather than a generic video downloader.

### Features

- Targeted support for OK.xxx `/video/<id>/` page structure
- Handles iframe-based video playback handoffs
- Detects M3U8 and MP4 stream formats
- Multi-domain coverage including ok.xxx, www.ok.xxx, and xiaoshenke.net
- Clean popup interface for easy download initiation
- Quality selection options when multiple streams are detected
- Simple one-click download process
- Saves videos in standard MP4 format for broad compatibility

### How It Works

1. Install the extension from the latest release.
2. Open OK.xxx and go to a supported video page.
3. Start playback so the extension can detect the media.
4. Open the popup or use the on-page controls.
5. Choose the quality option you want.
6. Start the download and wait for the MP4 export to finish.
7. Save the final file locally.

### Step-by-Step Tutorial: How to Download Videos from Okxxx

1. Install the Okxxx Downloader extension from the latest GitHub release.
2. Navigate to OK.xxx and find a video page with a `/video/<id>/` URL pattern.
3. Click on the video thumbnail to open the player page.
4. Start playback to trigger the iframe-based video surface.
5. Wait a few seconds for the extension to detect the embedded stream.
6. Click the extension icon in your browser toolbar to open the popup.
7. Select your preferred video quality from the available options.
8. Click the download button and wait for the MP4 file to save to your computer.

### Supported Formats

- Input: M3U8 and MP4 video streams detected through iframe-based playback on OK.xxx pages
- Output: MP4

Saved files use MP4 so they are easier to replay on standard media players, move between devices, or archive locally.

### Who It's For

- Users who want to save videos from OK.xxx for offline viewing
- People who prefer watching content without an internet connection
- Archivists and collectors preserving digital media from OK.xxx
- Users who want to avoid confusion with other OK-branded platforms

### Common Use Cases

- Saving favorite videos from OK.xxx for offline playback
- Building a local library of content from the platform
- Archiving videos that may be removed or become unavailable
- Watching content on devices without reliable internet access
- Sharing videos with others who may not have direct access to OK.xxx

### Troubleshooting

**The extension does not detect any video on the page**
Make sure you are on a valid `/video/<id>/` page and that video playback has started. The extension needs to see the iframe handoff before it can detect streams.

**The download fails or produces a corrupted file**
Try refreshing the page and restarting playback before attempting the download again. Network interruptions during the download process can cause incomplete files.

**Only one quality option is available**
Some videos on OK.xxx may only have a single stream version available. The extension will show whatever options the platform provides through the iframe handoff.

**The extension icon is grayed out on OK.xxx pages**
Verify that you are on a supported domain (ok.xxx, www.ok.xxx, or xiaoshenke.net) and that the page follows the `/video/<id>/` pattern.

**Downloads are slow or timing out**
Large video files can take time to download, especially on slower connections. Try downloading during off-peak hours or check your internet speed.

### Trial & Access

- Includes **3 free downloads** so you can test the workflow first
- Email sign-in uses secure one-time password verification
- No credit card required for the trial
- Unlimited downloads are available with a paid license

👉 Start here: [https://serp.ly/okxxx-downloader?via=apify](https://serp.ly/okxxx-downloader?via=apify)

### Installation Instructions

1. Open the latest release page: [GitHub Releases](https://github.com/serpcompany/okxxx-downloader/releases/latest)
2. Download the correct build for your browser.
3. Install the extension.
4. Open a supported OK.xxx page.
5. Use the popup to detect and download the media.

### FAQ

**What page types does Okxxx Downloader support?**
The extension is designed for OK.xxx's `/video/<id>/` page structure, which is a simple, short route pattern that hosts video content through an iframe handoff.

**Does this extension work with other OK-branded sites?**
No, this extension is specifically built for OK.xxx and should not be confused with OK Porn or other similarly named platforms. The target is the exact OK.xxx site with its `.xxx` TLD.

**What stream formats can I expect to download?**
The extension targets M3U8 and MP4 streams, which are the most common formats found on OK.xxx pages through the iframe-based playback surface.

**Can I download videos from xiaoshenke.net?**
Yes, xiaoshenke.net is one of the domains associated with OK.xxx and is covered by the extension's multi-domain support.

**Is the extension fully release-ready?**
The target is verified, but implementation caveats exist. The extension is available for testing and use, but ongoing development may refine the extraction process.

### Notes

- Only download content you own or have explicit permission to save
- An internet connection is required for downloads
- OK.xxx uses iframe-based playback handoffs on its video pages
- The extension covers ok.xxx, www.ok.xxx, and xiaoshenke.net domains

### License

This repository is distributed under the proprietary SERP Apps license in the [LICENSE](https://github.com/serpcompany/okxxx-downloader/blob/main/LICENSE) file. Review that file before copying, modifying, or redistributing any part of this project.

### About Okxxx

OK.xxx is a video platform that uses short `/video/<id>/` page routes and iframe-based playback to deliver content. Okxxx Downloader helps users save videos from this platform by working with its specific page structure and embedded player surface.

# Actor input Schema



## Actor input object example

```json
{}
````

# 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("how-to-download-videos/okxxx-video-downloader-how-to-download-okxxx-videos").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("how-to-download-videos/okxxx-video-downloader-how-to-download-okxxx-videos").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 how-to-download-videos/okxxx-video-downloader-how-to-download-okxxx-videos --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=how-to-download-videos/okxxx-video-downloader-how-to-download-okxxx-videos",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Okxxx Video Downloader | How to Download Okxxx Videos",
        "description": "Okxxx Video Downloader | How to Download Okxxx Videos Apify actor.",
        "version": "0.0",
        "x-build-id": "AOFok0qIV1AfDLTMg"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/how-to-download-videos~okxxx-video-downloader-how-to-download-okxxx-videos/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-how-to-download-videos-okxxx-video-downloader-how-to-download-okxxx-videos",
                "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/how-to-download-videos~okxxx-video-downloader-how-to-download-okxxx-videos/runs": {
            "post": {
                "operationId": "runs-sync-how-to-download-videos-okxxx-video-downloader-how-to-download-okxxx-videos",
                "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/how-to-download-videos~okxxx-video-downloader-how-to-download-okxxx-videos/run-sync": {
            "post": {
                "operationId": "run-sync-how-to-download-videos-okxxx-video-downloader-how-to-download-okxxx-videos",
                "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": {}
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
