# 4Kporn Video Downloader | How to Download 4Kporn Videos (`serpxxx/4kporn-video-downloader-how-to-download-4kporn-videos`) Actor

- **URL**: https://apify.com/serpxxx/4kporn-video-downloader-how-to-download-4kporn-videos.md
- **Developed by:** [SERP XXX](https://apify.com/serpxxx) (community)
- **Categories:** Videos, Automation, Social media
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN 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 a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.md):

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

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.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/platform/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

## 4Kporn Video Downloader | How to Download 4Kporn Videos

> Download 4kPorn videos from your browser with a player button, quality picker, and MP4/HLS support.

### Get it Here

Get it here: https://serp.ly/4kporn-downloader

![4Kporn Downloader](https://apps.serp.co/media/optimized-products/4kporn-downloader-homescreen-adult-9f22db4caf.webp)

4kporn Downloader is a browser extension designed to help you save videos from 4kPorn pages directly through your browser. It adds a download button to the video player area and detects available media sources so you can pick the quality you want and save the file locally as MP4.

- Adds a download button to the 4kPorn video player for one-click access
- Detects MP4 files and HLS streams from page metadata and media tags
- Lets you choose from available quality options when detected
- Processes HLS streams through the offscreen pipeline with retry safeguards
- Organizes downloads under a dedicated 4kPorn folder
- Includes 3 free trial downloads after email verification
- Works only on the 4kPorn domain family for focused support
- No account sharing or password storage — uses OTP email sign-in
### Table of Contents

- [Why 4kporn Downloader](#why-4kporn-downloader)
- [Features](#features)
- [How It Works](#how-it-works)
- [Step-by-Step Tutorial: How to Download Videos from 4kPorn](#step-by-step-tutorial-how-to-download-videos-from-4kporn)
- [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 4kPorn](#about-4kporn)

### Why 4kporn Downloader

Saving videos from 4kPorn pages is rarely straightforward. The media can be embedded inside player wrappers, hidden behind metadata tags, or streamed as HLS segments that require reassembly. Manually inspecting page source or using generic tools often leads to broken downloads or missing quality options.

4kporn Downloader is built specifically for the 4kPorn domain family. It scans the page for video sources, Open Graph and Twitter metadata, player documents, and KVS-style media records. Once detected, you simply choose a quality option and the extension handles the rest — direct MP4 passes through the browser pipeline, while HLS streams are processed in the background with segment retries and timeout protection. The result is a clean MP4 file saved to your local 4kPorn folder.

### Features

- Player download button attached to the 4kPorn video player wrapper
- Site matching for 4kporn.xxx, www.4kporn.xxx, and subdomains
- MP4 and HLS detection from video tags, source tags, and page metadata
- Quality selector based on detected labels, heights, and URL hints
- Offscreen HLS processing with up to 3 segment retries and 30-second stall timeout
- In-page download manager showing progress and completion status
- Context menu entry: Download 4kPorn Video on page and video contexts
- Desktop notifications for download events
- OTP email sign-in with no password storage
- 3 free trial downloads per device
- Downloads organized under a 4kPorn folder

### How It Works

1. Install the extension from the latest release.
2. Open 4kPorn 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 4kPorn

1. Install the extension from the GitHub Releases page.
2. Complete the email OTP sign-in to activate your 3 free trial downloads.
3. Navigate to a 4kPorn video page on a supported domain.
4. Let the video player load so the extension can scan for media sources.
5. Click the download button that appears on the player or open the extension popup.
6. Review the detected formats listed by quality label.
7. Select your preferred quality and click download.
8. Monitor progress in the download manager panel and save the completed file.

### Supported Formats

- Input: MP4 files and HLS streams detected from page markup, metadata, player documents, and KVS-style records
- 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

- Adults who use 4kPorn and want a private browser-based way to save videos
- Users who prefer a focused downloader that only activates on the 4kPorn domain family
- People who want quality selection instead of downloading whatever the page serves
- Anyone who needs HLS streams handled automatically without manual segment downloading

### Common Use Cases

- Save a 4kPorn video for offline viewing when you have permission
- Pick a specific quality from available MP4 or HLS-derived options
- Use the player button instead of copying media URLs manually
- Track download progress with the in-page download manager
- Keep downloads organized under a dedicated 4kPorn folder

### Troubleshooting

**No download button appears on the video player**
Make sure the video player has fully loaded and you have started playback. The extension needs the player to initialize before it can attach the button.

**No formats are detected in the popup**
Refresh the page and try again. Some videos may use media sources the extension cannot parse. If the issue persists, try a different video page.

**Download fails or stops partway**
Check your internet connection. For HLS streams, a segment may have timed out. Try again or choose a different quality option.

**The extension says I have no trial downloads left**
The 3 free downloads are counted per device. If you have used them, you will need a paid license to continue downloading.

**I get an error about missing permissions**
Make sure you have granted the extension permission to access 4kPorn pages and download files. Reinstall if necessary.

### 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/4kporn-downloader](https://serp.ly/4kporn-downloader)

### Installation Instructions

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

### FAQ

**Is this extension released?**
Yes, the latest build is available on the GitHub Releases page. Download and install it to start using the extension.

**Which site does it support?**
It is scoped to 4kPorn: 4kporn.xxx, www.4kporn.xxx, and matching 4kPorn subdomains.

**How do I download a 4kPorn video?**
Open a 4kPorn video page, let the player load, then use the in-player download button, extension popup, or context menu to choose a detected format.

**What formats are supported?**
The extension detects direct MP4 media and HLS playlists. HLS downloads are processed through the offscreen segment pipeline and saved as MP4.

**Can I choose quality?**
Yes, when the detected media exposes quality labels, heights, or URL hints. Actual options depend on the source page.

**Where are downloads saved?**
Downloads are saved to a 4kPorn folder in your browser's download directory.

**Why might a video not be detected?**
The video may not have loaded yet, the media may use an unsupported format, or the page structure may have changed. Refresh and try again.

**Is sign-in required?**
Yes. The extension uses email OTP verification and includes 3 free trial downloads.

**Is my browsing data sent to a server for video processing?**
The download pipeline processes everything in the browser. Auth and update checks call SERP Auth and GitHub release endpoints only.

### Notes

- Only download content you own or have explicit permission to save
- An internet connection is required for downloads
- 4kPorn pages may change their structure over time, which can affect detection
- The extension is intended for adults and for content the user has rights to download

### License

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

### About 4kPorn

4kPorn is an adult video platform offering high-definition content organized by categories and tags. 4kporn Downloader helps you save videos from the site directly through your browser, giving you more control over your media library.

# 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("serpxxx/4kporn-video-downloader-how-to-download-4kporn-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("serpxxx/4kporn-video-downloader-how-to-download-4kporn-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 serpxxx/4kporn-video-downloader-how-to-download-4kporn-videos --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

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