# NLLB-200 Website Translator (`sheshinmcfly/nllb-website-translator`) Actor

Translate any website into 50+ languages using Meta's NLLB-200 model � no API key required. Scrapes page content and returns original text alongside clean machine translations. Supports Spanish, French, German, Portuguese, Chinese, Arabic, Japanese, Korean, and many more.

- **URL**: https://apify.com/sheshinmcfly/nllb-website-translator.md
- **Developed by:** [Sheshinmcfly](https://apify.com/sheshinmcfly) (community)
- **Categories:** AI, Developer tools, Automation
- **Stats:** 3 total users, 0 monthly users, 100.0% runs succeeded, 1 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

## NLLB-200 Website Translator

Translate any website into **200+ languages** using Meta's open-source **NLLB-200** (No Language Left Behind) AI model via Hugging Face Inference API.

Simply provide URLs and your source/target languages — the actor scrapes the page content, sends it to the NLLB-200 model in chunks, and returns the full translation 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` | Source language code | `eng_Latn` |
| `targetLang` | Target language code | `spa_Latn` |
| `modelId` | NLLB model used | `facebook/nllb-200-distilled-600M` |
| `originalText` | Extracted page text | `"Welcome to our company..."` |
| `translatedText` | Translated text | `"Bienvenido a nuestra empresa..."` |
| `chunkCount` | Number of text chunks translated | `4` |
| `translatedAt` | Timestamp | `"2026-04-21T12:00:00Z"` |

---

### Use cases

- **International expansion**: Translate your competitor's site to understand their value proposition
- **Market research**: Read foreign-language e-commerce sites, news portals, or government sources
- **Content localization**: Translate documentation, landing pages, or blogs at scale
- **SEO research**: Analyze foreign-language keyword content
- **Academic research**: Access non-English sources at scale

---

### How to use

1. Get a free Hugging Face token at [huggingface.co/settings/tokens](https://huggingface.co/settings/tokens) (enable "Inference" permission)
2. Open the actor and configure:
   - **URLs to translate**: List of pages to process
   - **Source language**: NLLB code of the original (e.g. `eng_Latn` for English)
   - **Target language**: NLLB code for the output (e.g. `spa_Latn` for Spanish)
   - **Hugging Face Token**: Your HF API token
   - **Crawl depth**: `0` for only the given URLs, `1` to also follow internal links
   - **Model**: Choose speed vs accuracy
3. Download results as JSON or CSV

---

### Language codes (most common)

| Language | Code |
|---|---|
| English | `eng_Latn` |
| Spanish | `spa_Latn` |
| Portuguese | `por_Latn` |
| French | `fra_Latn` |
| German | `deu_Latn` |
| Italian | `ita_Latn` |
| Chinese (Simplified) | `zho_Hans` |
| Japanese | `jpn_Jpan` |
| Korean | `kor_Hang` |
| Arabic | `arb_Arab` |
| Russian | `rus_Cyrl` |
| Hindi | `hin_Deva` |

Full list of 200 language codes: [flores200 README](https://github.com/facebookresearch/flores/blob/main/flores200/README.md)

---

### Example output (JSON)

```json
{
  "url": "https://example.com/about",
  "title": "About us — Acme Corp",
  "sourceLang": "eng_Latn",
  "targetLang": "spa_Latn",
  "modelId": "facebook/nllb-200-distilled-600M",
  "originalText": "Welcome to Acme Corp. We build great products for...",
  "translatedText": "Bienvenido a Acme Corp. Construimos grandes productos para...",
  "chunkCount": 3,
  "translatedAt": "2026-04-21T12:00:00.000Z"
}
````

***

### Model comparison

| Model | Speed | Accuracy | Best for |
|---|---|---|---|
| `nllb-200-distilled-600M` | ⚡ Fast | Good | Most use cases |
| `nllb-200-1.3B` | Medium | Better | Balanced |
| `nllb-200-3.3B` | Slow | Best | High quality output |

***

### Pricing

This actor charges **$0.002 USD per page translated**. A run translating 50 pages costs approximately $0.10 USD, plus your Hugging Face API usage (free tier available).

***

### Keywords

website translator, NLLB-200 scraper, multilingual translation actor, Meta AI translation, Hugging Face NLLB, website content translation, 200 languages translator, web page translator API, automatic website translation

***

### 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 Hugging Face Inference API for translation
- Returns the translated content to the user who initiated the run

Users are solely responsible for ensuring their use of this actor and the translated content complies with applicable laws, the terms of service of the websites they scrape, and any relevant copyright regulations in their jurisdiction.

# Actor input Schema

## `urls` (type: `array`):

One or more web page URLs to translate.

## `targetLang` (type: `string`):

Language to translate into. Use 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.

## `sourceLang` (type: `string`):

Language of the original content. Use 'auto' to detect automatically (recommended), or an ISO 639-1 code like 'en', 'fr', 'de'.

## `provider` (type: `string`):

Which provider to use first. If it fails or isn't configured, the actor falls back automatically through the chain: DeepL → HuggingFace NLLB → LibreTranslate → MyMemory.

## `deeplApiKey` (type: `string`):

Free DeepL API key from deepl.com/pro-api. Gives 500,000 characters/month free. Supports 29 languages with top-tier quality.

## `huggingfaceToken` (type: `string`):

Free HuggingFace token from huggingface.co/settings/tokens. Uses Meta's NLLB-200 model supporting 200+ languages.

## `libretranslateUrl` (type: `string`):

Custom LibreTranslate instance URL. Leave blank to use public instances automatically. Example: https://libretranslate.com

## `libretranslateApiKey` (type: `string`):

API key for your LibreTranslate instance (optional for public instances).

## `mymemoryEmail` (type: `string`):

Provide your email to increase MyMemory quota from 1,000 to 10,000 words/day.

## `maxCharsPerPage` (type: `integer`):

Limit how much text is translated per page. Higher values = more content but more API usage. Recommended: 5,000–15,000.

## `maxDepth` (type: `integer`):

0 = only the given URLs. 1 = also follow internal links one level deep. 2 = two levels deep.

## `maxPages` (type: `integer`):

Maximum total pages to translate across all URLs and depth levels.

## `useSitemap` (type: `boolean`):

If enabled, the actor will fetch sitemap.xml from each domain and translate all discovered URLs (up to maxPages).

## `proxyConfiguration` (type: `object`):

Apify proxy settings. Datacenter proxies are sufficient for most sites.

## Actor input object example

```json
{
  "urls": [
    "https://en.wikipedia.org/wiki/Artificial_intelligence"
  ],
  "targetLang": "es",
  "sourceLang": "auto",
  "provider": "auto",
  "maxCharsPerPage": 5000,
  "maxDepth": 0,
  "maxPages": 10,
  "useSitemap": false,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `dataset` (type: `string`):

All translated content stored in the default dataset.

# 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 = {
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("sheshinmcfly/nllb-website-translator").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 = { "proxyConfiguration": { "useApifyProxy": True } }

# Run the Actor and wait for it to finish
run = client.actor("sheshinmcfly/nllb-website-translator").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 '{
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call sheshinmcfly/nllb-website-translator --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=sheshinmcfly/nllb-website-translator",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "NLLB-200 Website Translator",
        "description": "Translate any website into 50+ languages using Meta's NLLB-200 model � no API key required. Scrapes page content and returns original text alongside clean machine translations. Supports Spanish, French, German, Portuguese, Chinese, Arabic, Japanese, Korean, and many more.",
        "version": "1.0",
        "x-build-id": "YQ3Z6rlTcnb6qZx1a"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/sheshinmcfly~nllb-website-translator/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-sheshinmcfly-nllb-website-translator",
                "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/sheshinmcfly~nllb-website-translator/runs": {
            "post": {
                "operationId": "runs-sync-sheshinmcfly-nllb-website-translator",
                "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/sheshinmcfly~nllb-website-translator/run-sync": {
            "post": {
                "operationId": "run-sync-sheshinmcfly-nllb-website-translator",
                "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",
                "required": [
                    "urls"
                ],
                "properties": {
                    "urls": {
                        "title": "URLs to translate",
                        "type": "array",
                        "description": "One or more web page URLs to translate.",
                        "default": [
                            "https://en.wikipedia.org/wiki/Artificial_intelligence"
                        ],
                        "items": {
                            "type": "string"
                        }
                    },
                    "targetLang": {
                        "title": "Target language",
                        "type": "string",
                        "description": "Language to translate into. Use 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.",
                        "default": "es"
                    },
                    "sourceLang": {
                        "title": "Source language",
                        "type": "string",
                        "description": "Language of the original content. Use 'auto' to detect automatically (recommended), or an ISO 639-1 code like 'en', 'fr', 'de'.",
                        "default": "auto"
                    },
                    "provider": {
                        "title": "Preferred translation provider",
                        "enum": [
                            "auto",
                            "deepl",
                            "huggingface",
                            "libretranslate",
                            "mymemory"
                        ],
                        "type": "string",
                        "description": "Which provider to use first. If it fails or isn't configured, the actor falls back automatically through the chain: DeepL → HuggingFace NLLB → LibreTranslate → MyMemory.",
                        "default": "auto"
                    },
                    "deeplApiKey": {
                        "title": "DeepL API Key",
                        "type": "string",
                        "description": "Free DeepL API key from deepl.com/pro-api. Gives 500,000 characters/month free. Supports 29 languages with top-tier quality."
                    },
                    "huggingfaceToken": {
                        "title": "HuggingFace API Token",
                        "type": "string",
                        "description": "Free HuggingFace token from huggingface.co/settings/tokens. Uses Meta's NLLB-200 model supporting 200+ languages."
                    },
                    "libretranslateUrl": {
                        "title": "LibreTranslate Instance URL",
                        "type": "string",
                        "description": "Custom LibreTranslate instance URL. Leave blank to use public instances automatically. Example: https://libretranslate.com"
                    },
                    "libretranslateApiKey": {
                        "title": "LibreTranslate API Key",
                        "type": "string",
                        "description": "API key for your LibreTranslate instance (optional for public instances)."
                    },
                    "mymemoryEmail": {
                        "title": "MyMemory Email (optional)",
                        "type": "string",
                        "description": "Provide your email to increase MyMemory quota from 1,000 to 10,000 words/day."
                    },
                    "maxCharsPerPage": {
                        "title": "Max characters per page",
                        "minimum": 500,
                        "maximum": 50000,
                        "type": "integer",
                        "description": "Limit how much text is translated per page. Higher values = more content but more API usage. Recommended: 5,000–15,000.",
                        "default": 5000
                    },
                    "maxDepth": {
                        "title": "Crawl depth",
                        "minimum": 0,
                        "maximum": 2,
                        "type": "integer",
                        "description": "0 = only the given URLs. 1 = also follow internal links one level deep. 2 = two levels deep.",
                        "default": 0
                    },
                    "maxPages": {
                        "title": "Max pages",
                        "minimum": 1,
                        "maximum": 500,
                        "type": "integer",
                        "description": "Maximum total pages to translate across all URLs and depth levels.",
                        "default": 10
                    },
                    "useSitemap": {
                        "title": "Discover pages via sitemap.xml",
                        "type": "boolean",
                        "description": "If enabled, the actor will fetch sitemap.xml from each domain and translate all discovered URLs (up to maxPages).",
                        "default": false
                    },
                    "proxyConfiguration": {
                        "title": "Proxy Configuration",
                        "type": "object",
                        "description": "Apify proxy settings. Datacenter proxies are sufficient for most sites."
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
