# AShemaleTube Video Downloader (`maximedupre/ashemaletube-video-downloader`) Actor

Resolve known public AShemaleTube video URLs or numeric IDs. Get source-exposed HLS media links and video metadata in an Apify dataset.

- **URL**: https://apify.com/maximedupre/ashemaletube-video-downloader.md
- **Developed by:** [Maxime Dupré](https://apify.com/maximedupre) (community)
- **Categories:** Videos, Developer tools, Automation
- **Stats:** 2 total users, 1 monthly users, 75.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$8.10 / 1,000 resolved videos

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

### 🎬 AShemaleTube Video Downloader for Known Links

AShemaleTube Video Downloader is for developers, researchers, media teams, and other users who already have public [AShemaleTube](https://www.ashemaletube.com/) video URLs or numeric video IDs. It resolves each target and saves successful dataset rows with source video IDs, titles, descriptions, durations, thumbnails, tags, and HLS media links.

Use it when you need source-backed video data to review, catalog, or pass to an API workflow. It works with public, reachable pages only. You do not need AShemaleTube cookies, an AShemaleTube account, or a source API key for public targets.

- Extract HLS media links from a known public page with **[AShemaleTube Video URL Extractor](https://apify.com/maximedupre/ashemaletube-video-downloader/examples/ashemaletube-video-url-extractor)**.
- Look up a public video from a numeric ID with **[AShemaleTube Video ID Lookup](https://apify.com/maximedupre/ashemaletube-video-downloader/examples/ashemaletube-video-id-lookup)**.
- Build a structured dataset from known public targets with **[AShemaleTube Public Video Data](https://apify.com/maximedupre/ashemaletube-video-downloader/examples/ashemaletube-public-video-data)**.
- Get source-exposed HLS playlist links with **[AShemaleTube HLS Playlist Links](https://apify.com/maximedupre/ashemaletube-video-downloader/examples/ashemaletube-hls-playlist-links)**.
- Collect source-backed titles, durations, thumbnails, and tags with **[AShemaleTube Video Metadata](https://apify.com/maximedupre/ashemaletube-video-downloader/examples/ashemaletube-video-metadata)**.

#### 📦 AShemaleTube video rows

The Actor accepts public AShemaleTube video URLs and numeric AShemaleTube video IDs. It saves the first eligible occurrence of each source video as soon as it finds it. If another submitted URL or ID points to the same video later, that later match is ignored. The saved row describes the first match and is not merged with later aliases.

It is focused on known AShemaleTube video pages. It works with public, reachable pages only. It does not search AShemaleTube, crawl categories, process albums, bypass private access, install a browser extension, download files into Apify storage, or create ZIP archives.

**What each row includes**

Each output row represents one public AShemaleTube video where at least one source-exposed HLS media link was found. Core fields include:

- `videoId` - AShemaleTube video ID.
- `title` - video title from the source page, when available.
- `description` - source video description, when available.
- `durationSeconds` - video duration in seconds, when available.
- `thumbnailUrl` - source thumbnail or poster image URL, when available.
- `tags` - source-backed tags or categories.
- `availableFormats` - discovered HLS variants with `quality`, `width`, `height`, `contentType`, and `mediaUrl`.

The Actor returns HLS media URLs because that is what the source currently exposes for public playback. If your downstream tool expects a single MP4 file, use a workflow that can read HLS playlists. The Actor does not download or store media files, convert HLS to MP4, or create ZIP archives.

You can open the dataset in Apify, export it as JSON, CSV, Excel, XML, RSS, or HTML, call it through the Apify API, schedule recurring runs, or connect results to webhooks and integrations.

#### ▶️ Resolve known AShemaleTube videos

1. Open the Actor input.
2. Add AShemaleTube video URLs or numeric IDs in **AShemaleTube videos**.
3. Start the Actor.
4. Open the dataset.
5. Use `availableFormats` to pick the HLS media variant that fits your workflow.

Open the dataset after the run to review successful rows.

#### ⚙️ Input

**Input fields**

| Field | Type | What it does |
| ----- | ----- | ----- |
| `targets` | array of strings | Required list of 1 to 100 non-empty public AShemaleTube video URLs or numeric video IDs. Each value is one target. |

**Example input**

This is the public input from a successful current-beta default-input run.

```json
{
  "targets": [
    "https://www.ashemaletube.com/videos/1103318/trans-57/",
    "1213720",
    "https://www.ashemaletube.com/videos/1211090/bbc-fucks-shemale-and-force-feeds-her-cum/",
    "https://www.ashemaletube.com/videos/1211106/mature-redhead-in-gothic-style/",
    "https://www.ashemaletube.com/videos/1217499/femboy-masturbates-and-eats-own-cum/"
  ]
}
```

The form requires at least one target, accepts up to 100 targets, and rejects exact duplicate values. It has no separate result-limit field. A target can fail or produce no row while other targets continue.

#### 🧾 Output

**Dataset access**

| Field | Type | What it does |
| ----- | ----- | ----- |
| `results` | link string | Opens the successful AShemaleTube video rows in the default dataset overview. |

**Video row**

A saved row contains source-backed values when available. `availableFormats` has at least one HLS variant.

| Field | Type | What it does |
| ----- | ----- | ----- |
| `videoId` | string | Source video ID for identifying the video. |
| `title` | string or null | Source video title, when available. |
| `description` | string or null | Source video description, when available. |
| `durationSeconds` | integer or null | Video duration in seconds, when available. |
| `thumbnailUrl` | string or null | Source thumbnail or poster URL, when available. |
| `tags` | array of strings | Source tags or categories, when available. |
| `availableFormats` | array of objects | HLS media variants exposed by the source. |
| `availableFormats[].quality` | string or null | Quality label for the HLS variant, when provided. |
| `availableFormats[].width` | integer or null | Variant width in pixels, when provided. |
| `availableFormats[].height` | integer or null | Variant height in pixels, when provided. |
| `availableFormats[].contentType` | string or null | Media content type, when provided. |
| `availableFormats[].mediaUrl` | string | Source HLS media URL for the variant. |

This complete row is copied from a successful current-beta run. Public source values are shown as returned.

```json
{
  "videoId": "1213720",
  "title": "Sofia-T amateur Crossdresser",
  "description": "Crossdresser, Solo, Amateur, Sissy, Creators",
  "durationSeconds": 111,
  "thumbnailUrl": "https://cdn77-t.ashemaletube.com/b-ashemaletube/thumbs/ast-full/2026-05/21/aa20a0e217d598d40b1c001b1a0569b95.mp4-full-14.jpg",
  "tags": [
    "Crossdresser",
    "Solo",
    "Amateur",
    "Sissy",
    "Creators"
  ],
  "availableFormats": [
    {
      "quality": "1080p",
      "width": 1920,
      "height": 1080,
      "contentType": "application/vnd.apple.mpegurl",
      "mediaUrl": "https://ip365389156.ahcdn.com/key=EtTurj+5QlVBK8TU1F0o4A,s=,end=1790747956/state=aryJotSp/reftag=020484251/media=hls4A/32/26/4/493757064.mp4/index.m3u8"
    }
  ]
}
```

Failed targets are reported in logs and status messages, not as dataset rows. This keeps exports focused on successfully resolved media.

#### 💳 Pricing

This Actor uses pay-per-event pricing. You are charged one `Resolved video` event for each successfully resolved public video row with HLS media links and available source metadata.

Failed, invalid, private, removed, blocked, duplicate, or no-media targets do not create paid result rows.

#### 🔌 Integrations

https://www.youtube.com/watch?v=bNACk1\_S\_6w\&list=PLObrtcm1Kw6MUrlLNDbK9QRg8VDJg0gOW\&index=4

- Run the Actor from the Apify API with a `targets` array of video URLs or numeric IDs.
- Schedule recurring runs when you maintain a stable target list.
- Export datasets as JSON, CSV, Excel, XML, RSS, or HTML.
- Send completed run data to webhooks or downstream tools that can read HLS playlist URLs.

#### ❓ FAQ

##### How do I use a known AShemaleTube video URL?

Add a public AShemaleTube video URL to `targets`, start the Actor, and open the dataset. Each successful row includes source-exposed HLS media links and available source metadata.

##### Can I use a numeric video ID?

Yes. Add a numeric AShemaleTube video ID such as `1103318`, and the Actor will resolve the public video page.

##### What happens if I submit the same video more than once?

The Actor saves the first eligible occurrence and ignores later URL or ID aliases for that source video. It does not merge later matches into the saved row.

##### What happens when one target fails?

The Actor logs the failed target and continues with the others. It does not add a failure row, so the dataset stays focused on successful video results.

##### Does this Actor save MP4 files?

No. The Actor returns source-exposed HLS media links and metadata. It does not download or store media files or convert HLS to MP4.

##### Does it need cookies, login, or an API key?

No for public targets. The normal workflow does not require AShemaleTube cookies, a source account, or a source API key.

##### Can it search AShemaleTube?

No. It resolves known public video URLs and numeric IDs. It does not search AShemaleTube or crawl categories and albums.

### 📝 Changelog

**v0.0** (27-09-2026)

- Initial release.

### 🆘 Support

For issues, questions, or feature requests, [file a ticket](https://console.apify.com/actors/maximedupre~ashemaletube-video-downloader/issues) and I'll fix or implement it in less than 24h 🫡

### 🔗 Related Actors

- [TNAFlix Video Downloader](https://apify.com/maximedupre/tnaflix-downloader) - Resolve known public TNAFlix video URLs or IDs into direct MP4 links and source metadata.
- [XNXX Video Downloader](https://apify.com/maximedupre/xnxx-video-downloader) - Resolve known public XNXX watch pages into direct MP4 or HLS links and metadata.
- [XVideos Video Downloader](https://apify.com/maximedupre/xvideos-downloader) - Turn known public XVideos watch pages into source media links and video metadata.
- [Pornhub Video Data Downloader](https://apify.com/maximedupre/pornhub-downloader) - Collect public Pornhub video metadata and source-visible HLS links from known targets.
- [RedGifs Bulk Video Downloader](https://apify.com/maximedupre/redgifs-bulk-downloader) - Process public RedGifs links or IDs and export direct MP4 links with metadata.

**Made with ❤️ by Maxime Dupré**

# Actor input Schema

## `targets` (type: `array`):

Enter one public AShemaleTube.com video URL or numeric video ID per row.

## Actor input object example

```json
{
  "targets": [
    "https://www.ashemaletube.com/videos/1103318/trans-57/",
    "1213720",
    "https://www.ashemaletube.com/videos/1211090/bbc-fucks-shemale-and-force-feeds-her-cum/",
    "https://www.ashemaletube.com/videos/1211106/mature-redhead-in-gothic-style/",
    "https://www.ashemaletube.com/videos/1217499/femboy-masturbates-and-eats-own-cum/"
  ]
}
```

# Actor output Schema

## `results` (type: `string`):

Open successful video rows with metadata and HLS media links.

# 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 = {
    "targets": [
        "https://www.ashemaletube.com/videos/1103318/trans-57/",
        "1213720",
        "https://www.ashemaletube.com/videos/1211090/bbc-fucks-shemale-and-force-feeds-her-cum/",
        "https://www.ashemaletube.com/videos/1211106/mature-redhead-in-gothic-style/",
        "https://www.ashemaletube.com/videos/1217499/femboy-masturbates-and-eats-own-cum/"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("maximedupre/ashemaletube-video-downloader").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 = { "targets": [
        "https://www.ashemaletube.com/videos/1103318/trans-57/",
        "1213720",
        "https://www.ashemaletube.com/videos/1211090/bbc-fucks-shemale-and-force-feeds-her-cum/",
        "https://www.ashemaletube.com/videos/1211106/mature-redhead-in-gothic-style/",
        "https://www.ashemaletube.com/videos/1217499/femboy-masturbates-and-eats-own-cum/",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("maximedupre/ashemaletube-video-downloader").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "targets": [
    "https://www.ashemaletube.com/videos/1103318/trans-57/",
    "1213720",
    "https://www.ashemaletube.com/videos/1211090/bbc-fucks-shemale-and-force-feeds-her-cum/",
    "https://www.ashemaletube.com/videos/1211106/mature-redhead-in-gothic-style/",
    "https://www.ashemaletube.com/videos/1217499/femboy-masturbates-and-eats-own-cum/"
  ]
}' |
apify call maximedupre/ashemaletube-video-downloader --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,maximedupre/ashemaletube-video-downloader"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/EBzK1zO47DjTdv0tg/builds/xnKO61Rk1kdmmFmlX/openapi.json
