Skip to content

Dataset Translator

Try for free

Translate texts, records and whole datasets into 100+ languages in bulk: product catalogs, reviews, listings, posts, UI strings. Source language detected automatically, formatting and placeholders kept. One row per text and language. No API key needed.

🌐 Dataset Translator

Translate texts, records and whole datasets into 100+ languages in one run: product catalogs, reviews, listings, social posts, support tickets, UI strings. Paste texts or pick the results of another run, choose your languages, and get every translation back as a clean row with the detected source language. No API key, no login, $12.75 per 1,000 translations on the Free plan (less on paid plans) plus the AI model's usage.

✨ Why use Dataset Translator?

  • 📚 Whole datasets, not just lines — pick the dataset of any of your runs (reviews, products, listings, posts) and get each record back with its text fields translated. Ids, links, prices, dates and codes stay as they are.
  • 🌍 One text → many languages — every text goes into each target language in the same run, so a full translation matrix for all your markets takes one click.
  • 🔎 Source detected per text — mixed-language input is fine; each row reports the language the text was in.
  • 🧩 Formatting kept — HTML tags, Markdown, line breaks, emoji, URLs and placeholders such as {name}, %s or {{var}} come back intact, so translated strings drop straight into templates and apps.
  • 📏 Any length — long texts are split at paragraph and sentence breaks, translated in parts and joined again. Nothing is cut off.
  • ⚡ Fast — texts are translated in parallel batches: 10,000 short reviews into German took just over 3 minutes in our test run.
  • 🎛️ Your style — add a glossary or tone ("formal Sie, keep product names") and choose the AI model, from fast and light to best quality.

🎯 Use cases

  • 🛒 E-commerce localization — translate product titles and descriptions into every language you sell in, then upload the CSV to your shop.
  • ⭐ Review analysis — turn reviews in 20 languages into one language before you read, tag or score them.
  • 🏠 Listings and marketplaces — translate property, job or car listings collected from foreign sites.
  • 💬 Support and social — understand tickets, comments and posts from customers worldwide.
  • 📱 App and website strings — translate UI strings with their placeholders untouched.
  • 🔬 Research — make multilingual survey answers, news or social data readable for your team.

🚀 How to use

  1. Paste your texts into Texts to translate, one per line, or pick a Dataset to translate from one of your runs (or paste records as JSON).
  2. Add your Target languages: codes like es, fr, de, ar, ja, zh-CN, pt-BR, or names like Spanish.
  3. Leave Source language on auto, or set it when you know it.
  4. For records, optionally list the Fields to translate (empty = every field with human text).
  5. Click Start, then open the Output tab and export to JSON, CSV or Excel, or read the rows through the API.

📥 Input

FieldWhat it does
Texts to translateOne text per line, any length.
Target languagesCodes or names. Every text is translated into each one. Empty: English.
Source languageauto (default) detects each text's language.
Dataset to translateA dataset from one of your runs; every record comes back translated.
Records (JSON)Records to translate, as a JSON list of objects.
Fields to translateField names such as title, description, reviews.text. Empty: every human-text field.
Max records from the datasetTranslate only the first N records, e.g. to try it out. Empty: all.
One row per record, languages as columnsKeep the original and add title_es, title_fr next to it, one row per record.
AI modelThe model that translates (default: fast and light).
Style and glossaryOptional instructions: tone, terms to keep, preferred translations.

Texts:

{
    "texts": ["Hello, how are you?", "Thank you for your order. It ships tomorrow."],
    "targetLanguages": ["es", "fr"]
}

A dataset from another run, three fields, two languages:

{
    "datasetId": "4f966164-377d-46ce-9746-f317e212b76b",
    "fields": ["title", "description", "reviews.text"],
    "targetLanguages": ["de", "ja"]
}

Records with their own languages (target_lang and source_lang are accepted too):

{
    "items": [
        { "text": "Bonjour tout le monde", "targetLanguages": ["en", "de"] },
        { "text": "Guten Morgen", "sourceLanguage": "de", "targetLanguages": ["it"] }
    ]
}

📤 Output

Texts give one row per text and target language:

{
    "index": 1,
    "originalText": "Thank you for your order. It ships tomorrow.",
    "translatedText": "Merci pour votre commande. Elle sera expédiée demain.",
    "sourceLanguage": "en",
    "sourceLanguageName": "English",
    "targetLanguage": "fr",
    "targetLanguageName": "French",
    "model": "google/gemini-3.1-flash-lite",
    "characters": 44,
    "success": true,
    "error": null
}
FieldDescription
indexPosition of the text in your input, for matching rows back
originalTextYour text
translatedTextThe translation
sourceLanguage, sourceLanguageNameDetected (or given) source language
targetLanguage, targetLanguageNameLanguage translated into
modelAI model that translated
charactersLength of the original text
successtrue when a translation was returned
errorWhy a text could not be translated

Records keep all their own fields, with the chosen text fields translated in place, plus targetLanguage, targetLanguageName, sourceLanguage, sourceLanguageName, translatedFields (the fields that were translated) and translationError:

{
    "title": "Blaues Baumwollhemd",
    "description": "Weich und atmungsaktiv, ideal für den Sommer.",
    "price": 24.9,
    "url": "https://shop.example.com/p/blue-shirt",
    "sku": "BCS-001",
    "reviews": [{ "author": "Anna", "text": "Passt perfekt und die Farbe ist toll.", "rating": 5 }],
    "targetLanguage": "de",
    "targetLanguageName": "German",
    "sourceLanguage": "en",
    "sourceLanguageName": "English",
    "translatedFields": ["title", "description", "reviews.text"],
    "translationError": null
}

With One row per record, languages as columns turned on, the original stays and each language is added next to it (title_de, title_ja; for texts, translations.de, translations.ja).

💰 Pricing

You pay per translation: one text (or one record) translated into one language. Translating 10 texts into 3 languages is 30 translations.

EventFreeStarterScaleBusiness
Translation$0.01275$0.00935$0.0085$0.00765
Extra language (languages-as-columns layout)$0.01275$0.00935$0.0085$0.00765

With One row per record, languages as columns turned on, a row's first language is a translation and each further language in that row an extra language, so the cost is the same in both layouts.

The run's platform usage is billed on top at your plan's rates: the AI model's tokens (shown as AI model tokens in the run's cost breakdown) and a little compute. With the default model, 1,000 short texts (about 90 characters each) used about $0.11 of model tokens on a paid plan and about $0.17 on the Free plan, plus less than $0.001 of compute. Longer texts and the larger models use more tokens.

Example: 1,000 product reviews into Spanish cost about $12.92 on the Free plan ($12.75 + $0.17) and about $7.76 on Business ($7.65 + $0.11).

Texts that cannot be translated are saved with an error and are not charged. Texts with no words at all (only numbers, emoji or symbols) come back unchanged and are free too.

❓ FAQ

Which languages are supported? More than 100, including Arabic, Chinese (Simplified and Traditional), Hindi, Japanese, Korean, Russian, Turkish, Urdu, Vietnamese and regional forms such as pt-BR, es-MX or fr-CA. Codes and English names both work.

Do I need an API key or an account with a translation service? No. Everything runs on Scrape.ly; the AI model is part of the run.

Which fields of my records are translated? The fields you list in Fields to translate. If you list none, every field with human text is translated, and ids, links, e-mails, dates, numbers, prices, codes, image fields, addresses and the names of people, places and companies are left as they are. List a field explicitly to translate it anyway.

Can I translate the results of my scraping runs automatically? Yes. Pass its defaultDatasetId as datasetId from a webhook, an integration or a schedule, or chain the two runs through the API.

What if a text is already in the target language? It comes back unchanged and is still a normal row.

Can I keep brand names or force certain terms? Yes, write them in Style and glossary, e.g. "Keep 'Scrape.ly' untranslated; translate 'run' as 'Ausführung'".

⚠️ Limits

  • Translations come from an AI model: they read naturally, but check legal, medical or safety-critical text with a human.
  • On the Free plan, AI model usage is limited per day (resets at midnight UTC), which covers a few thousand short texts a day; paid plans have no daily limit.
  • Records are translated field by field; a field holding a whole JSON or code document is translated as text.
  • The Dataset to translate must be one of your own datasets.

Related actors

//From the blog\\

Latest articles

All articles

The internet is full of data.
Start owning yours.

Scrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes.

No credit card. No setup calls.