15% off your first purchase with code WELCOME15, up to 25 GB.

See pricing

AI training data · Multilingual corpora

Multilingual corpus collection for LLM and NLP datasets

Multilingual corpus collection means gathering web text per language from the markets where that language is written, not from whatever a crawler happens to reach from one data centre. Fetch each language's sites from exits in its countries, honour machine-readable opt-outs, and pay per gigabyte for a run that may pause for months.

Pay per GB · No subscription · Prices in EUR, excl. VAT

Illustration. The URLs and values are fictional; the connection string is the real grammar.
€0.75
per GB on ARC Basic, excl. VAT
−21%
at 1 TB (€0.59 / GB)
185+
countries, city targeting
Never
expires — no subscription

Written for

  • Multilingual LLM pre-training teams
  • Low-resource language NLP researchers
  • Speech and translation dataset builders
  • Regional model fine-tuning teams

The short answer

  • English is about 42.6% of pages in Common Crawl's latest crawl statistics; the next language, Russian, is about 6.3%. Most languages are a fraction of a percent, so targeted collection is how you get enough of them.
  • Many sites serve language and regional content by visitor location. Collect each language from exits in the countries where it is used, with country geo-targeting.
  • In the EU, text and data mining of lawfully accessible content is allowed under Article 4 of Directive (EU) 2019/790 unless the rightholder has reserved it, for online content in machine-readable form. Check for reservations before you fetch.
  • General-purpose AI model providers must have a copyright policy that identifies and complies with those reservations (AI Act, Art. 53(1)(c)), applicable from 2 August 2025.
  • Text-only HTML is light. Run the bulk on ISP proxies, block images and media, and move only failing sources to a residential pool.

The problem

What goes wrong without the right IPs

Open crawls are English-heavy

In Common Crawl's language statistics, English is over 40% of pages and most languages sit well below one percent. Filtering a general crawl for a low-resource language yields little text, much of it machine-translated boilerplate. Seeding a targeted crawl from that language's own sites is usually the only way to reach useful volume.

The server picks the language from your IP

News sites, retailers and public services redirect to a regional edition or language by visitor location. Crawl Catalan, Basque or Galician sites from a US data centre and you may collect the Spanish or English edition instead.

Language ID fails on short and mixed text

Code-switching, transliteration and closely related languages confuse language identifiers. A page tagged as one language can be another, which is why per-market seeding plus document-level language ID beats either alone.

Opt-outs live in more than one place

A reservation of text and data mining rights can be expressed in robots.txt, in page metadata or in site terms. A crawler that reads only one of them can miss a reservation that applies.

Collection pauses for review

Licensing review, quality audits and annotation stop a crawl for weeks. A monthly subscription bills through the pause; a per-GB balance that never expires waits for you.

What to collect

What you can collect

Document text, cleaned
Main content with navigation and boilerplate removed. Store the raw HTML or a hash of it as well so cleaning can be rerun.
Detected language and script, with confidence
Document-level language ID plus script (Latin, Cyrillic, Devanagari …). Low-confidence documents are where most contamination hides.
Exit country and fetch timestamp
Which market the page was served for and when. Needed to explain regional variants and for any later takedown request.
Canonical URL and domain
For deduplication, per-domain balancing and honouring later removal requests.
Rights signals observed
robots.txt result, page-level TDM or AI-usage metadata, and licence statements seen at fetch time. This is the evidence trail for your opt-out compliance.
Content hash and near-duplicate cluster ID
Multilingual web text is heavily duplicated across mirrors and translated templates. Deduplicate before you count tokens.
Licence, where stated
Creative Commons and public-sector licences can be stored and filtered on; many datasets publish licence breakdowns.

How it runs

How a collection run works

  1. 01

    Seed per language from per-market sources

    Build seed lists from country-code domains, public broadcasters, government portals, Wikipedia-linked sites and open-licence repositories in each language. Tag each seed with the countries where its language is used.

  2. 02

    Check rights signals before fetching

    Read robots.txt per RFC 9309 for your crawler's user agent, and record any machine-readable text and data mining reservation the site publishes. Skip reserved content and keep the record.

    robots.txt check, then a country-targeted fetch
    from urllib import robotparserfrom urllib.parse import urlsplitimport httpxPROXY_HOST, PROXY_PORT, PASSWORD = "proxy.arcproxies.io", 8000, "PASSWORD"UA = "ExampleCorpusBot/1.0 (+https://example.org/bot)"def proxy_for(country: str) -> str:    user = f"USERNAME_pool-arc_country-{country}"  # rotating ISP pool    return f"http://{user}:{PASSWORD}@{PROXY_HOST}:{PROXY_PORT}"def allowed(url: str, client: httpx.Client) -> bool:    root = "{0.scheme}://{0.netloc}".format(urlsplit(url))    rp = robotparser.RobotFileParser()    rp.parse(client.get(root + "/robots.txt").text.splitlines())    return rp.can_fetch(UA, url)with httpx.Client(proxy=proxy_for("pl"), headers={"User-Agent": UA}, timeout=30) as c:    url = "https://news.example.pl/article/123"    if allowed(url, c):        html = c.get(url).text  # store with exit country, timestamp, rights signals
  3. 03

    Fetch text-only from exits in the language's markets

    Rotate through a pool per country, block images, video and fonts, and keep a per-domain request rate low. Different languages can run in parallel without sharing a rate budget.

  4. 04

    Identify language, deduplicate, filter

    Run document-level language ID, cluster near-duplicates across domains, and apply quality filters tuned per language rather than one English-tuned threshold for all.

  5. 05

    Balance and document

    Balance per domain and per country so one large site does not dominate a language, and publish a summary of sources and opt-out handling with the dataset.

Setup

Recommended setup

Corpus text is light HTML at very high volume, so the cheapest pool carries almost all of it.

PlanRoleSessionTargetingPrice
ARC Basic
Rotating ISP
Default for text collection
Our lowest price per GB, with country targeting in 185+ countries. Text-only pages are the shape it is built for.
RotatingCountry
€0.75 / GB
€0.59 at 1 TB (−21%)
ARC Fast
Rotating residential
For regional sites that serve differently to hosting ranges
Residential exits for the sources that return a different edition, or nothing, to data-centre traffic. Route only those domains.
Rotating, or sticky 10 minutes for paginated archivesCountry + city
€2.00 / GB
€1.12 at 1 TB (−44%)

Prices are list prices in EUR, excl. VAT. Volume discounts apply automatically at checkout — full ladder on the pricing page.

Connect

One connection string per market

The country, city and sticky session are tokens in the username. Change the token, change the market; keep the session handle, keep the IP.

sticky · Germany · 10 min
http://USERNAME_pool-arcfast_country-de_session-k3f9a1x2_sesstime-10:PASSWORD@proxy.arcproxies.io:8000

Swap _country-de for any market you quote. The full grammar is on the residential proxies page.

Illustration

What one collection run across eight languages costs

An illustration with round numbers — your pages, payloads and retry rate will differ. The arithmetic is the real price ladder.

Assumptions

Languages
8 (e.g. Polish, Czech, Greek, Romanian, Hungarian, Finnish, Croatian, Slovak)
Pages per language
250,000
Transfer per page
60 KB, text only, compressed
Robots.txt and retries
included in the page weight
Bandwidth per collection run
≈ 120 GB

On ARC Basic

€81.60per collection run, excl. VAT

120 GB bought in one purchase at €0.68 / GB (−9% volume rung, applied automatically).

The same 120 GB on ARC Fast: €163.20 at €1.36 / GB. Route only the jobs that need it through the pricier pool.

Corpus runs are bursty: one big run, months of cleaning, then a top-up. Bought once, the balance does not expire between runs. See how much bandwidth scraping uses.

Bandwidth never expires, so a bigger single purchase is only ever cheaper per GB. See the ladder.

In depth

Multilingual corpora, in depth

How much of the web is not in English?

Common Crawl publishes language statistics per crawl, detected with CLD2 on HTML pages and counting each document's primary language. In its most recent crawl, CC-MAIN-2026-43, the top ten are:

LanguageShare of pages
English42.6%
Russian6.3%
German5.8%
Japanese4.9%
French4.8%
Spanish4.7%
Chinese4.4%
Italian2.6%
Portuguese2.5%
Polish1.9%

Everything below Polish shares the remaining fraction among more than a hundred languages. That is why multilingual datasets combine general crawls with targeted collection. FineWeb2, for example, adapted one processing pipeline to more than 1,000 languages from about 100 Common Crawl snapshots and found that per-language tuning of filtering and deduplication matters.

Text and data mining opt-outs under EU law

Directive (EU) 2019/790 has two text and data mining exceptions. Article 3 covers research organisations and cultural heritage institutions mining for scientific research. Article 4 covers everyone else, including commercial model training, for lawfully accessible works, on condition that the rightholder has not expressly reserved that use in an appropriate manner; for content made publicly available online, the directive names machine-readable means as the appropriate manner.

The AI Act ties model providers to that condition. Article 53(1)(c) of Regulation (EU) 2024/1689 requires providers of general-purpose AI models to put in place a policy to comply with Union copyright law and, in particular, to identify and comply with reservations of rights under Article 4(3) of the directive. Article 53(1)(d) requires a publicly available summary of training content. Both apply from 2 August 2025.

In practice, that means recording what each source said at fetch time. This page describes what the texts say; it is not legal advice, and how to treat specific signals is a question for counsel.

Why exit location matters for language coverage

  • Regional editions. Broadcasters, retailers and public services redirect to a language or regional edition by visitor location. The exit decides which edition you collect.
  • Minority languages within a country. Regional-language versions of a site are often served to visitors in the region or chosen by default there.
  • Per-language rate budgets. Spreading a crawl across country pools keeps each domain's request rate low and lets languages run in parallel. See rate limiting.
  • Provenance. Logging the exit country with each document lets you explain later why a page is in the corpus in the form it is.

If a page renders its text with JavaScript, render it with a headless browser, but block media; text is what you are paying to collect.

Running a polite, documented corpus crawl

Identify your crawler with a user agent and a contact URL, read robots.txt for that user agent, keep a conservative per-domain rate, and honour removal requests by URL and domain. Keep everything public and logged-out: no paywalls, no accounts, no CAPTCHA solving.

Keep the rights signals and fetch metadata with each document in your corpus store. When the training-content summary is written, or a rightholder asks, that record is what you will need. The AI training data page covers the general setup, and our acceptable use policy applies to every request.

Works with anything that takes a proxy URL

  • Python requests / httpx
  • Scrapy
  • Crawl4AI
  • Crawlee
  • Docker

FAQ

Questions

Something not covered? Write to contact@arcproxies.io.

How do I collect training data in a specific language?

Seed a crawl from sites in that language, such as country-code domains, public broadcasters and government portals, and fetch them from exits in the countries where the language is used. Then run document-level language identification and per-language quality filtering, because general crawls contain very little text in most languages.

What share of the web is in English?

In Common Crawl's language statistics for crawl CC-MAIN-2026-43, English is about 42.6% of HTML pages by primary language. Russian is next at about 6.3%, then German, Japanese, French and Spanish at around 5% each. Most languages are well under one percent.

Does the EU text and data mining exception allow AI training on web content?

Article 4 of Directive (EU) 2019/790 allows text and data mining of lawfully accessible works, including for commercial purposes, unless the rightholder has expressly reserved it, for online content in machine-readable form. The AI Act requires general-purpose model providers to identify and comply with those reservations. This is not legal advice.

Do I need residential proxies for corpus collection?

Mostly not. Text pages from news, public and reference sites are light HTML that ARC Basic handles with country targeting at our lowest price per GB. Move a domain to ARC Fast only when it serves a different edition, or nothing, to data-centre addresses.

How much bandwidth does a multilingual corpus crawl use?

Text-only pages with images and media blocked are often 30 to 100 KB in transfer. Eight languages at 250,000 pages each at 60 KB comes to about 120 GB per run. Rendering pages or fetching media multiplies that quickly.

Can I respect robots.txt while using a proxy pool?

Yes. robots.txt applies to your crawler, not to the IP it comes from. Identify the crawler with a user agent, read each site's robots.txt for that user agent, and skip disallowed paths whichever exit the request uses.

Get started

Buy a gigabyte and try it on your own targets.

No subscription, no sales call. Code WELCOME15 takes 15% off your first purchase, and whatever you do not use is still there next quarter.