Txxx Video Downloader avatar

Txxx Video Downloader

Pricing

Pay per event

Go to Apify Store
Txxx Video Downloader

Txxx Video Downloader

Download authorized public Txxx videos to Apify storage with duration, dimensions, thumbnails, provenance, and exact file metadata.

Pricing

Pay per event

Rating

0.0

(0)

Developer

Stas Persiianenko

Stas Persiianenko

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

8 days ago

Last modified

Share

Download authorized, anonymously reachable public Txxx videos into Apify storage and export a clean metadata record for every successful file.

The Actor accepts supplied txxx.com video page URLs. It resolves each public source-quality MP4, optionally copies the file into the run key-value store, and writes provenance and media metadata to the default dataset. This makes recurring archival jobs easier to audit than a list of short-lived direct media links.

Use this Actor only for content you are legally allowed to access, copy, and retain. It does not bypass login, payment, DRM, private-video controls, or access restrictions.

What does Txxx Video Downloader do?

For each supported public video URL, the Actor:

  1. validates that the URL belongs to https://txxx.com;
  2. verifies that the source reports the video as public and available;
  3. extracts the video ID, title, description, duration, thumbnail, publication time, and categories;
  4. resolves a fresh source-hosted MP4 URL;
  5. looks up source dimensions when available;
  6. optionally streams the MP4 into the run key-value store;
  7. records exact stored bytes and a stable Apify storage link;
  8. emits one typed dataset row; and
  9. deduplicates repeated video IDs within the run.

The default behavior stores files. Set saveVideos to false when you need a metadata inventory before deciding what to archive.

Who is it for?

  • Authorized archivists preserving public media with source provenance.
  • Content owners backing up their own public uploads.
  • Compliance teams collecting permitted evidence with a retrieval timestamp.
  • Researchers inventorying supplied public URLs before a bounded download.
  • Automation teams scheduling recurring URL batches and exporting results to a data pipeline.

This is a URL-driven downloader, not a site search crawler. It processes only the videos you explicitly supply.

Why use this Actor?

A direct source URL alone can expire and says little about the archived item. This Actor pairs the saved file with:

  • the stable Txxx video ID;
  • the canonical source page;
  • title and description;
  • source duration and pixel dimensions;
  • thumbnail and categories;
  • resolved media MIME type;
  • key-value store record key;
  • exact copied byte count; and
  • the time the record was produced.

Files are streamed with a configurable byte limit. An oversized or unavailable source is skipped rather than saved partially. Successful records are not charged twice when the same ID appears more than once.

What data does it return?

FieldTypeMeaning
videoIdstringStable numeric Txxx video ID
titlestringPublic source title
descriptionstring or nullPublic description when available
durationstring or nullSource-formatted duration
durationSecondsnumber or nullDuration normalized to seconds
widthnumber or nullSource width in pixels when available
heightnumber or nullSource height in pixels when available
thumbnailUrlstringPublic source thumbnail
sourceUrlstringCanonical Txxx video page
mediaUrlstringFresh source-hosted MP4 URL; it may expire
contentTypestringResolved media MIME type
videoFileKeystring or nullRun storage key when file saving is enabled
videoFileUrlstring or nullApify API URL for the stored MP4
videoSizeBytesnumber or nullExact number of stored bytes
publishedAtstring or nullSource publication time when available
categoriesstring[]Public source category labels
scrapedAtstringISO 8601 retrieval timestamp

Nullable fields remain null when the source does not expose them. The default dataset always contains the primary result records. Downloaded MP4s are stored under keys such as video-3436969.mp4.

How to download public Txxx videos

  1. Open the Actor in Apify Console.
  2. Add one or more public https://txxx.com/videos/... URLs to Txxx video URLs.
  3. Keep Save video files enabled to copy each MP4 into run storage.
  4. Set Maximum video size (MB) to a limit appropriate for your authorization and storage budget.
  5. Set Maximum videos to bound successful results.
  6. Click Start.
  7. Open Video metadata for dataset rows.
  8. Open Saved video files for stored MP4 records.

Start with one known URL. Then increase the batch only after confirming file size and retention requirements.

Input parameters

startUrls

Required array of public Txxx video page URLs. Each URL must use HTTPS and match this shape:

https://txxx.com/videos/{numericVideoId}/{slug}/

www.txxx.com is accepted and normalized to txxx.com. Other sites, direct CDN links, search pages, private pages, and malformed paths are rejected.

maxItems

Maximum number of unique successful rows. Allowed range: 1–100. The default is the number of supplied URLs, capped by schema defaults in Console. Failures do not consume this success limit.

saveVideos

When true, the Actor copies MP4 bytes into the run key-value store. When false, it emits metadata and a fresh source media URL without storing the file. The default is true.

maxVideoSizeMb

Per-file limit from 1 MB to 10 MB. The default is 10 MB. A source that exceeds the 10 MB safety ceiling is skipped and no partial record is retained.

Example input

{
"startUrls": [
{
"url": "https://txxx.com/videos/3436969/example-of-a-female-led-marriage/"
}
],
"maxItems": 1,
"saveVideos": true,
"maxVideoSizeMb": 10
}

For a metadata-only inventory:

{
"startUrls": [
{
"url": "https://txxx.com/videos/8780704/erin-avery-an-exceptional-example-of-instance/"
}
],
"maxItems": 1,
"saveVideos": false
}

Example output

The exact file URL and timestamp differ by run. This shortened record reflects real current fields:

{
"videoId": "3436969",
"title": "Example of a Female led marriage",
"description": null,
"duration": "04:56",
"durationSeconds": 296,
"width": 342,
"height": 240,
"thumbnailUrl": "https://tn.txxx.tube/contents/videos_screenshots/3436000/3436969/288x162/1.jpg",
"sourceUrl": "https://txxx.com/videos/3436969/example-of-a-female-led-marriage/",
"contentType": "video/mp4",
"videoFileKey": "video-3436969.mp4",
"videoSizeBytes": 5374369,
"categories": ["Femdom", "Russian", "Slave"],
"scrapedAt": "2026-08-17T07:00:00.000Z"
}

The mediaUrl is intentionally omitted from this documentation example because source download tokens expire. Use the row produced by your run.

How much does it cost to download public Txxx videos?

The Actor uses pay-per-event pricing:

  • one start event is charged once per run; and
  • one item event is charged for each unique successful dataset record.

Files, thumbnails, and metadata in the same row have no separate Actor event charge. Failed, duplicate, private, removed, malformed, or oversized inputs do not receive an item charge.

Current pricing is a $0.005 start fee plus tiered item pricing. At the BRONZE tier, the item price is $0.0036 per successful video. The live pricing panel is authoritative and shows volume discounts across FREE, BRONZE, SILVER, GOLD, PLATINUM, and DIAMOND tiers.

Examples at the BRONZE rate:

Successful videosActor event price
1$0.0086
5$0.0230
10$0.0410
25$0.0950
100$0.3650

Apify platform compute and storage usage may also apply according to your plan. Large video files consume more transfer, run time, and storage than metadata-only mode. Use maxVideoSizeMb and retention settings deliberately.

Batch and recurring archival workflow

A practical recurring workflow is:

  1. maintain an authorized list of public source URLs;
  2. send the current list to a scheduled Actor task;
  3. use maxItems as a run-level safety bound;
  4. store files only when the archive requires them;
  5. export dataset rows to your inventory system;
  6. compare videoId, videoSizeBytes, and scrapedAt with prior runs; and
  7. apply an Apify storage retention policy matching your obligations.

The Actor deduplicates only within one run. Perform cross-run retention and change tracking in your downstream system or scheduled workflow.

Integrations

Connect the default dataset to:

  • Google Sheets for a lightweight inventory;
  • webhooks for post-run processing;
  • Make or Zapier for workflow orchestration;
  • a database or object catalog for provenance tracking;
  • Python or JavaScript jobs using apify-client; or
  • another Actor for authorized downstream processing.

Treat videoFileUrl as an authenticated Apify API resource unless your storage settings make it public. Do not publish storage tokens or signed source media URLs.

Run with the Apify API using cURL

Replace YOUR_TOKEN with an Apify API token:

curl -X POST \
"https://api.apify.com/v2/acts/automation-lab~txxx-video-downloader/runs?token=YOUR_TOKEN&waitForFinish=300" \
-H "Content-Type: application/json" \
-d '{
"startUrls": [{"url": "https://txxx.com/videos/3436969/example-of-a-female-led-marriage/"}],
"maxItems": 1,
"saveVideos": true,
"maxVideoSizeMb": 10
}'

Read items from the run's defaultDatasetId. Read files from its defaultKeyValueStoreId.

Run with JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('automation-lab/txxx-video-downloader').call({
startUrls: [
{ url: 'https://txxx.com/videos/3436969/example-of-a-female-led-marriage/' },
],
maxItems: 1,
saveVideos: true,
maxVideoSizeMb: 10,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Use client.keyValueStore(run.defaultKeyValueStoreId) to inspect stored records.

Run with Python

import os
from apify_client import ApifyClient
client = ApifyClient(os.environ['APIFY_TOKEN'])
run = client.actor('automation-lab/txxx-video-downloader').call(run_input={
'startUrls': [
{'url': 'https://txxx.com/videos/3436969/example-of-a-female-led-marriage/'},
],
'maxItems': 1,
'saveVideos': True,
'maxVideoSizeMb': 10,
})
items = client.dataset(run['defaultDatasetId']).list_items().items
print(items)

The returned run object also contains the default key-value store ID.

Use with Apify MCP

Add this Actor to Claude Code:

claude mcp add --transport http apify \
"https://mcp.apify.com?tools=automation-lab/txxx-video-downloader"

Claude Desktop, Cursor, and VS Code can use the equivalent JSON configuration:

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?tools=automation-lab/txxx-video-downloader"
}
}
}

Example prompts:

  • "Run Txxx Video Downloader for these authorized public URLs and save files up to 10 MB."
  • "Resolve this supplied public Txxx URL in metadata-only mode and return duration and dimensions."
  • "Archive this bounded list, then summarize successful file sizes and failed URLs."

Always include actual authorized URLs in the Actor input. The Actor does not search Txxx by keyword.

Limits and failure behavior

  • Only public HTTPS txxx.com/videos/... pages are supported.
  • A fresh media path is resolved on every run because source links can expire.
  • Dimensions are best-effort and can be null if the source listing no longer exposes them.
  • Private, removed, restricted, malformed, and non-Txxx URLs are skipped.
  • Videos larger than 10 MB are rejected before storage so slow source delivery stays within the run's cost and timeout envelope.
  • If every supplied URL fails, the Actor run fails with a non-zero status.
  • Upstream transient requests receive bounded retries.
  • No residential proxy or browser fallback is enabled.
  • The Actor does not bypass DRM, authentication, payment, or geofencing.
  • Maximum successful rows per run are limited to 100.

Source changes can temporarily affect availability. A failed URL does not prove that another public URL is unavailable.

Tips for reliable runs

  • Test one URL before submitting a batch.
  • Prefer canonical page URLs copied from the address bar.
  • Keep a conservative maxVideoSizeMb until you know expected sizes.
  • Use metadata-only mode to estimate a batch without copying files.
  • Schedule batches with explicit URL lists rather than broad discovery.
  • Keep Apify storage private unless publication is intentional.
  • Configure storage retention after export.
  • Store videoId as the cross-run deduplication key.
  • Do not rely on the expiring mediaUrl as your durable archive.
  • Use videoFileUrl and the run's key-value store for the retained copy.

You are responsible for ensuring that your use complies with:

  • copyright and license terms;
  • the source website's terms and access rules;
  • privacy and data-protection law;
  • age and adult-content regulations;
  • record-retention obligations; and
  • Apify's terms and acceptable-use policies.

Only process content you own or have permission or another lawful basis to copy. Do not use the Actor to redistribute content, evade controls, harass people, or collect prohibited material. The Actor is a technical automation tool and does not grant rights in source media.

Troubleshooting

Why did my run say no videos were saved?

Check that every input is a canonical public Txxx video page. The video may be private, removed, unavailable, restricted, oversized, or temporarily inaccessible. Run one URL with a larger but still responsible file limit to isolate the cause.

Why are width and height null?

The source detail response does not always include dimensions. The Actor performs a best-effort listing lookup by exact video ID. The file can still be resolved and stored when that enrichment is unavailable.

Why is videoFileUrl null?

saveVideos was set to false. Enable it and rerun with a sufficient maxVideoSizeMb limit.

Why does mediaUrl stop working later?

It is a fresh source-hosted URL with an expiry token. Use the stored videoFileUrl for the durable run copy.

Are duplicate URLs charged twice?

No. The Actor deduplicates by numeric video ID within the run and emits one successful item.

FAQ

Can it search Txxx?

No. The accepted product scope is supplied public video URLs.

Can it download private or paid videos?

No. It supports only anonymously reachable public media.

Does it save thumbnails separately?

No. The dataset includes the public thumbnail URL; only the MP4 is copied to run storage.

Can I disable file storage?

Yes. Set saveVideos to false for metadata-only output.

Where are downloaded files stored?

In the run's default key-value store under video-{videoId}.mp4.

Is a successful run proof that I may reuse the content?

No. Technical accessibility and legal permission are different questions.

Choose the source-specific Actor when it matches the supplied URL. Use the generic playlist downloader only when you already have an authorized public HLS manifest.

Support

When reporting an issue, include:

  • one affected public page URL;
  • whether saveVideos was enabled;
  • the configured size limit;
  • the run ID; and
  • the exact error message.

Do not send credentials, private URLs, API tokens, or personal data.