How it will work: 3 steps
- Follow us on ApifyThe tool is built and waits in the queue for the Apify Store. Apify is the cloud platform where our tools run.
- Paste your input and press StartNo code needed: you fill in a form (the input). It already has a working example. For example:
Hello worldin Texts to translate. Each start is one run. - Download the resultsWhen the run ends, the results are in a table (the dataset). Open Output, press Export and pick Excel or CSV. JSON and the API are there too.
This tool is an Apify Actor: a small program that runs on Apify. You can also run it on a schedule, for example every Monday. New to it? Read how it works, step by step and the 8 words you need first.
What it does
Text Translator turns a list of texts into translations in 50 languages with open-source Argos Translate models that run inside the Actor. No API key, no login and no Google or DeepL account are needed. Each text becomes one Dataset row with the translation, the detected source language and a status.
- 50 languages, from Albanian to Vietnamese. When there is no direct model for a pair, the text goes through English, and the row shows
pivot: "en". - No API key and no login. The models are open source (MIT licence) and run on the Apify server. Your texts are not sent to any translation API.
- Line breaks and HTML tags stay.
<p>Free <b>shipping</b></p>becomes<p>Gratis <b>envío</b></p>. - Clear status per text. Texts already in the target language, empty texts and numbers are not translated and not billed by characters.
Good for
- Bulk translation of short and medium texts: product data, reviews, tickets, survey answers.
- Pipelines that need translation without managing an API key or quota.
- Teams that do not want to send texts to Google, DeepL or another translation API.
Not a good fit
- Legal, medical or marketing copy that needs human quality. Open-source models are less accurate than Google or DeepL on difficult texts.
- Translating whole web pages or documents (PDF, DOCX). The input is plain text or simple HTML strings.
- More than one target language in one run. Start one run per target language.
Who uses it
Online shops
Translate product data, such as titles and descriptions.
Support teams
Translate tickets, reviews and survey answers in bulk.
Developers
Add translation to a pipeline without an API key or quota.
Price
Prices will be shown after release.
Questions
Do I need an API key or a login?
No. It uses open-source models inside the run. You only need an Apify account.
Are my texts sent to Google or DeepL?
No. Texts are translated on the Apify server.
Can I translate into several languages at once?
Not in one run. Start one run for each target language.
How good is the quality?
It is good for everyday sentences and short product texts. It is lower than paid services on hard texts.
Details
Step by step on Apify
- Open the Input tab.
- In Texts to translate (
texts), add one text per line item, for exampleHello world. - Keep Target language (
targetLanguage) at the prefilledes(Spanish) or choose another language. - Click Start.
- Open the Output tab, view Translations, and check the
translationcolumn.
Use cases
| Task | Input | You get | Key fields | Next step |
|---|---|---|---|---|
| Translate product descriptions for a new market | texts, targetLanguage | one row per description | translation, status | export CSV or JSON, import into your shop |
| Read customer reviews in one language | texts, sourceLanguage: "auto" | one row per review | sourceLanguage, translation | sentiment or keyword analysis |
| Translate support tickets for an agent team | texts from your helpdesk export | one row per ticket | index, translation | match rows back by index |
Tips for better results
- Try a small sample first to check the quality.
- Start one run for each target language.
- Use simple HTML strings. Tags and line breaks stay in place.
Limits and good to know
- Quality is lower than Google Translate or DeepL on long or difficult sentences. Check important texts
- Single words and very short texts can be detected as the wrong language. Set
sourceLanguageif you know it - A single Japanese word can get a wrong translation. Short sentences work better than single words
- Repeated symbols can change, for example
★★★★★can come back with a different number of stars - Inline HTML fragments are translated one by one, so word order around tags can be less natural
- Pairs that go through English (
pivot: "en") are slower and can lose some meaning
For developers
Sample result
One result from a real test run, in JSON. Real values change from run to run. In Excel or CSV each field is a column.
[
{
"index": 0,
"text": "Hello world",
"translation": "Hola mundo",
"sourceLanguage": "en",
"targetLanguage": "es",
"pivot": null,
"chars": 11,
"status": "translated",
"error": null
},
{
"index": 1,
"text": "<p>Free <b>shipping</b> on orders over $50.</p>",
"translation": "<p>Gratis <b>envío</b> por órdenes de más de $50.</p>",
"sourceLanguage": "en",
"targetLanguage": "es",
"pivot": null,
"chars": 47,
"status": "translated",
"error": null
},
{
"index": 2,
"text": "Ce produit est arrivé cassé. Remboursement SVP !",
"translation": "Este producto se rompió. ¡Reembolso por favor!",
"sourceLanguage": "fr",
"targetLanguage": "es",
"pivot": "en",
"chars": 48,
"status": "translated",
"error": null
}
]Data fields (14)
| Field | Type | Meaning |
|---|---|---|
index | integer | Position of the text in the input list, starting at 0. |
text | string | Original text. |
translation | string | Translated text with the original line breaks; the original text for unchanged and empty rows; null on errors. |
sourceLanguage | string | Source language code used (given or detected). |
detectedLanguage | string | Language detected automatically; null when sourceLanguage was set. |
detectionConfidence | number | Detection confidence 0–1; low values are common for texts of a few words. |
targetLanguage | string | Target language code. |
engine | string | Translation engine: argos-translate (open-source models, run inside the Actor). |
model | string | Model(s) used with versions, e.g. de→en 1.3 + en→es 1.0. |
pivot | string | en when the text was translated through English, otherwise null. |
chars | integer | Characters in the original text; translated rows are billed by these characters. |
status | string | translated, unchanged (already in the target language or no letters), empty, unsupported_language, skipped (cost limit, timeout or abort; free) or error (free). Only translated rows count characters. |
error | object | {code, message} when the text was not translated. |
translatedAt | string | Time the row was finished, ISO 8601 UTC. |
Input settings (3)
The main fields of the input form. With the API you send them as JSON.
| Setting | Name in the API | Type | Example value |
|---|---|---|---|
| Texts to translate required | texts | array | ["Hello world"] |
| Target language required | targetLanguage | string | "es" |
| Source language | sourceLanguage | string | "auto" |