Translate for SEO
Most translation tools hand you grammatically correct sentences that nobody searches for. The SEO Translation endpoint takes your source text and the target locale and produces copy built around the query real users type into search boxes in that market, so the page you publish has a fighting chance of ranking instead of just reading well.
Run it online
Run this on our servers with your account. Free tools run in your browser; this one bills your KIT balance per the price above.
The gap literal translation leaves open
A direct translation of 'running shoes' into Mexican Spanish might render as 'zapatos para correr,' which is correct, while local search volume clusters around 'tenis para correr' or 'zapatillas deportivas' depending on the country. This endpoint is built for teams who publish landing pages, product copy or blog content in multiple languages and need the target-language keyword woven in naturally, not just the phrase translated word for word.
What the request needs and what comes back
Send the source text, the target locale, and optionally a primary keyword or topic you want emphasized; the task runs asynchronously and returns a task_id immediately. When it finishes, the result includes the translated copy with the locally-searched terms integrated at natural density, along with the detected or confirmed target keyword so you can verify it against your own keyword research before publishing.
Where this sits in a content pipeline
Search behavior has never mapped one-to-one across languages, that is the entire reason keyword research exists as a discipline. Localizing search intent, not just vocabulary, has been standard practice for international SEO teams for over a decade; this endpoint automates the translation half of that workflow so a human editor reviews keyword fit instead of doing the first-draft translation by hand.
How it plugs into automated publishing
Because results arrive via signed webhook, you can wire this directly into a CMS pipeline: a new article gets created in English, the webhook fires, the translated and keyword-adjusted version lands in your queue for review, and an editor approves before it goes live. For batches, submit many requests in parallel and let each task_id resolve independently instead of waiting on a synchronous call per page.
What it will not do for you
This is not a guarantee of ranking, nobody can honestly promise that, and it is not a replacement for a native-speaking editor's final pass. It removes the tedious part: producing a first draft that already speaks the language search engines and users in that market actually use, so your reviewer's time goes toward judgment calls, not vocabulary choices.
What you can do with it
Multilingual landing pages
A SaaS company expanding into Brazil translates its English pricing page and gets copy anchored to the Portuguese terms Brazilian users actually search, instead of a direct rendering of the English headline.
E-commerce category pages
An online retailer translating category names discovers the target-market term differs from the dictionary translation and adjusts the page title before publishing.
Blog content syndication
A content team publishing the same article in five languages runs each translation through this endpoint so every locale's version targets the phrase local readers search, not a shared literal translation.
Localized ad landing pages
A performance marketer translates a campaign landing page and matches the on-page copy to the exact keyword used in the local-language ad group.
FAQ
How is this different from a normal translation API?
A normal translation renders meaning faithfully; this endpoint additionally weights the output toward the keyword or phrase actually searched in the target locale, which sometimes differs from the literal translation.
Is the SEO translation API free?
There's no free tier — free tiers get abused and slow everyone down. Access runs on a prepaid ForHosting KIT balance: top up from $10.00 (it never expires) and each request is charged at its published price, so a call with no balance returns HTTP 402. No subscription, no tokens, no invented credits, and a failed task is never charged.
Which languages are supported?
The endpoint accepts common source and target locale pairs used in commercial content; specify the target locale in the request and the task adapts output to that market's search vocabulary.
Can I submit product catalogs or bulk pages in one job?
This endpoint is built for single pieces of text; for large product sets, the dedicated catalog translation endpoint is the better fit since it is optimized for item-by-item batch throughput.
How do I get the result back?
Submit the request and receive a task_id immediately since the job runs asynchronously; results are delivered via signed webhook, the recommended method, or through a signed link valid for 24 hours.
Does it guarantee my page will rank?
No honest tool can guarantee ranking. It produces copy aligned with locally-searched terms, which is a foundation for ranking, not a promise of it.
What happens if the task fails?
The system retries automatically up to three times; if it still fails, you get a clear error and you are not charged for the attempt.
Is my content used to train models?
No. Data is processed to produce your result and deleted after the retention period; it is never used for training.
For developers — API access
Everything on this page is available programmatically. This section is for teams who want to wire it into their own systems; everyone else can just use the tool above.
API endpoint
Prefer to automate it? One authenticated POST creates the task; the result comes back by webhook or a signed link. The same capability also runs here on the web, and soon from our app, email and Telegram.
Call it from your stack
curl -X POST https://api.kit.forhosting.com/translate/seo \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"…"}'const res = await fetch("https://api.kit.forhosting.com/translate/seo", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "…"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/translate/seo",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "…"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/translate/seo", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"…"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"…"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/translate/seo", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"text": "…"
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "translate.seo",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}The API is asynchronous: the call returns a task_id immediately and the result arrives by webhook. Polling is capped at 1 req/s per task.
Pricing
Published price — no tokens, no invented credits. A failed task is never charged.
Limits
max_tokens | 20000 |
Errors
| HTTP | Code | Meaning |
|---|---|---|
401 | unauthorized | Missing or invalid API key. |
402 | insufficient_balance | Your balance doesn't cover the task price. |
404 | unknown_type | That task type doesn't exist. |
429 | rate_limited | Too many requests. Use the webhook instead of polling. |
422 | task_failed | The task failed after 3 retries. You are never charged for it. |