NLLB-200 Website Translator
Pricing
from $2.00 / 1,000 results
NLLB-200 Website Translator
Translate any website into 50+ languages. No API key required. Scrapes page content and returns clean original + translated text. Supports English, Spanish, French, German, Portuguese, Chinese, Arabic, Japanese, Korean, and more.
Pricing
from $2.00 / 1,000 results
Rating
0.0
(0)
Developer
Sheshinmcfly
Maintained by CommunityActor stats
1
Bookmarked
3
Total users
1
Monthly active users
6 days ago
Last modified
Categories
Share
Website Translator — 200+ Languages, No API Key Required
Translate any website into 200+ languages using a multi-provider chain: DeepL (if you have a key) → Meta NLLB-200 via Hugging Face → LibreTranslate → MyMemory. The actor automatically falls back to the next provider if one fails or isn't configured, so it works with zero credentials out of the box.
Provide URLs and target language — the actor scrapes the page content, translates it in chunks, and returns the original + translated text in a structured dataset.
What data does it extract?
| Field | Description | Example |
|---|---|---|
url | Page URL | https://example.com/about |
title | Page title | "About us — Acme Corp" |
sourceLang | Input source language (or auto) | auto |
detectedSourceLang | Auto-detected language | en |
targetLang | Target language used | es |
provider | Provider that translated the content | libretranslate |
sections | Array of translated sections (one per HTML block) | [{tag, original, translated}] |
stats.sectionsCount | Number of sections extracted | 4 |
stats.charsOriginal | Characters in original text | 1240 |
stats.charsTranslated | Characters in translated text | 1310 |
stats.chunksCount | API chunks sent to provider | 2 |
stats.durationMs | Translation time in ms | 3810 |
translatedAt | ISO timestamp | "2026-04-21T12:00:00Z" |
How to use
- Open the actor and paste one or more URLs to translate.
- Set Target language using an ISO 639-1 code (
es,fr,de,pt,zh,ar,ja,ko,ru,hi, etc.) - (Optional) Add a DeepL or HuggingFace token for higher quality. Leave blank to use free providers automatically.
- Run and download results as JSON or CSV.
Provider chain
| Provider | Quality | Languages | Requires |
|---|---|---|---|
| DeepL | ⭐⭐⭐⭐⭐ | 29 | Free API key (500k chars/month) |
| HuggingFace NLLB-200 | ⭐⭐⭐⭐ | 200+ | Free HF token |
| LibreTranslate | ⭐⭐⭐ | 30+ | None (public instances) |
| MyMemory | ⭐⭐⭐ | 60+ | None (1k words/day free) |
Use cases
- International expansion — Translate a competitor's site to understand their value proposition
- Market research — Read foreign-language e-commerce sites, news portals, or government sources in your language
- Content localization — Translate documentation, landing pages, or product descriptions at scale
- SEO research — Analyze foreign-language keyword content without manual translation
- Academic research — Access non-English sources at scale
- Monitoring — Detect content changes on foreign-language sites in a readable language
Input parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
urls | array | — | One or more page URLs to translate (required) |
targetLang | string | es | ISO 639-1 target language code |
sourceLang | string | auto | ISO 639-1 source code, or auto to detect |
provider | select | auto | Preferred provider (falls back automatically) |
deeplApiKey | string | — | DeepL API key (optional, 500k chars/month free) |
huggingfaceToken | string | — | HuggingFace token for NLLB-200 (optional) |
libretranslateUrl | string | — | Custom LibreTranslate instance URL (optional) |
libretranslateApiKey | string | — | LibreTranslate API key (optional) |
mymemoryEmail | string | — | Email to increase MyMemory quota to 10k words/day |
maxCharsPerPage | integer | 5000 | Max characters translated per page (500–50,000) |
maxPages | integer | 10 | Max pages to translate across all URLs and depths |
maxDepth | integer | 0 | Crawl depth: 0 = only given URLs, 1–2 = follow links |
useSitemap | boolean | false | Discover pages via sitemap.xml |
proxyConfiguration | object | Apify proxy | Proxy settings |
Output format
{"url": "https://example.com/about","title": "About us — Acme Corp","sourceLang": "auto","detectedSourceLang": "en","targetLang": "es","provider": "libretranslate","sections": [{"tag": "p","original": "Welcome to Acme Corp. We build great products for...","translated": "Bienvenido a Acme Corp. Construimos excelentes productos para..."},{"tag": "h1","original": "Our Products","translated": "Nuestros Productos"}],"stats": {"sectionsCount": 2,"charsOriginal": 980,"charsTranslated": 1020,"wordsOriginal": 140,"chunksCount": 1,"durationMs": 4210},"translatedAt": "2026-04-21T12:00:00.000Z"}
Performance & limits
- Speed: ~5–15 seconds per page (depends on text length and provider)
- Concurrency: Sequential (1 page at a time) to respect free-tier rate limits
- Free tier limits: LibreTranslate/MyMemory work without keys; for high-volume jobs add DeepL or HuggingFace
- Text limit: Configurable up to 50,000 chars/page via
maxCharsPerPage - Agent-ready: This actor is compatible with x402 micropayment protocol for autonomous agent use
Pricing
This actor uses Pay Per Event (PPE) pricing: $0.005 per page translated.
| Pages | Estimated cost |
|---|---|
| 10 pages | ~$0.05 |
| 100 pages | ~$0.50 |
| 500 pages | ~$2.50 |
Provider API costs (HuggingFace, DeepL) are separate and billed by those services. The free tiers of all providers are sufficient for most workflows.
FAQ
Do I need API keys? No. LibreTranslate and MyMemory work without any credentials. Keys for DeepL or HuggingFace unlock higher quality and higher quotas.
What language codes do I use?
Use standard ISO 639-1 codes: es (Spanish), fr (French), de (German), pt (Portuguese), zh (Chinese), ar (Arabic), ja (Japanese), ko (Korean), ru (Russian), hi (Hindi), etc.
How does the provider fallback work? The actor tries providers in order (DeepL if key provided → HuggingFace if token provided → LibreTranslate → MyMemory). If a provider fails or hits a quota limit, it automatically moves to the next one — transparently.
Can it translate entire sites?
Yes. Use maxDepth: 1 or 2 to follow internal links, or enable useSitemap to auto-discover all URLs from the site's sitemap.xml.
What happens to untranslatable content? JavaScript-rendered content, paywalled pages, and very short pages (no meaningful text) are skipped with a warning in the logs.
Related actors
- Financial Calendar Scraper — Earnings calendar, IPOs, economic events.
- FinViz Stock Screener — Stock screener — gainers, losers, most active and more.
- Reddit Thread Scraper — Posts, comments and metadata from any subreddit.
- Stack Overflow Scraper — Questions, answers and tags.
Legal disclaimer
This actor is designed to process publicly available content only, in compliance with Chilean Law 19.628 on the Protection of Private Life (Ley 19.628 sobre Protección de la Vida Privada) and general data protection principles.
What this actor does NOT collect:
- Names of natural persons or private individuals
- Personal identification numbers, private emails, or phone numbers
- Any data that could identify or profile a specific private individual
What this actor does:
- Extracts publicly accessible text from web pages (identical to what any browser user would see)
- Sends that text to the selected translation provider for processing
- Returns the translated content to the user who initiated the run
Users are solely responsible for ensuring their use of this actor complies with applicable laws, the terms of service of the websites they scrape, and any relevant copyright regulations in their jurisdiction.
Changelog
- v1.0 — Multi-provider chain (DeepL → HuggingFace NLLB-200 → LibreTranslate → MyMemory), sitemap discovery, configurable crawl depth, PPE pricing