---
title: "Audit the language and region signals of one page: html lang, the Content-Language header, hreflang alternates, the language detected in the visible text, and geo meta tags. It reads that page and applies nothing to any other call: target_language and target_country shape this one request only. No proxy is used, so the request leaves from the same address as every other tool and a geo-block is not lifted (a regional block follows the exit IP). To request a page in a language elsewhere, pass it on that call: fetch_url headers {\"Accept-Language\": ...} or stealth_mode stealthConfig {locale, timezone}; scrape has no locale parameter. The CrawlForge MCP server's localization tool is a different surface (configure_country and other operations) that returns a country's locale values and likewise applies none."
method: POST
path: "/tools/localization"
tags: ["tools"]
---

# Audit the language and region signals of one page: html lang, the Content-Language header, hreflang alternates, the language detected in the visible text, and geo meta tags. It reads that page and applies nothing to any other call: target_language and target_country shape this one request only. No proxy is used, so the request leaves from the same address as every other tool and a geo-block is not lifted (a regional block follows the exit IP). To request a page in a language elsewhere, pass it on that call: fetch_url headers {"Accept-Language": ...} or stealth_mode stealthConfig {locale, timezone}; scrape has no locale parameter. The CrawlForge MCP server's localization tool is a different surface (configure_country and other operations) that returns a country's locale values and likewise applies none.

`POST /tools/localization`

## Request

- Base URL: `https://www.crawlforge.dev/api/v1`
- URL: `https://www.crawlforge.dev/api/v1/tools/localization`
- Auth: API key in header `X-API-Key`

## Request body

- LocalizationRequest
  - `url` string, uri, required: The URL to analyze for localization
  - `target_language` string: Language you expect (e.g., "en", "fr", "es"). Sent as this request's Accept-Language and compared with the detected language and html lang
  - `target_country` string: Country you expect (e.g., "US", "FR", "JP"). Echoed back and sent as an X-Country-Code header on this request; it does not change where the request comes from
  - `detect_language` boolean: Detect the page language from its visible text. Returns an ISO 639-1 code, or "und" when the language cannot be determined.
  - `extract_hreflang` boolean: Extract hreflang alternate language tags
  - `check_geo_targeting` boolean: Check for geo-targeting metadata
  - `timeout` number: Request timeout in milliseconds (1000-30000)
  - `respect_robots` boolean

## Response `200`

The tool's result; 2 credits charged (see x-credits-note and x-extra for add-ons).

- ToolSuccess: The envelope every tool returns on success. Credits are deducted only after the tool succeeded, so credits_used is the price of this call and an error response never charges.
  - `success` true, required
  - `data` object, required: The tool's result. Its shape is tool-specific and documented on the tool's docs page (x-docs-url on the operation).
  - `credits_used` integer, required: Credits charged for this call: the operation's x-credits, plus any add-on x-credits-note or x-extra describes.
  - `credits_remaining` integer, required: The account's credit balance after this call.
  - `processing_time` integer, required: Server-side processing time in milliseconds.
  - `warnings` string[]: Non-fatal notes: a robots.txt override that was recorded, a format that could not be produced, a redaction that changed the payload.

## Other responses

- `400`: VALIDATION_ERROR: the body does not match the request schema.
- `401`: MISSING_API_KEY or INVALID_API_KEY.
- `402`: INSUFFICIENT_CREDITS: the balance does not cover the tool's base price. X-Auto-Recharge-Triggered says whether an automatic recharge was started; retry once it lands.
- `429`: RATE_LIMIT_EXCEEDED: your plan's rate limit. Retry-After: 60.
- `500`: TOOL_ERROR, INTERNAL_ERROR or CREDIT_DEDUCTION_FAILED.
- `default`: Any other error. Which of 403, 404, 413, 422, 501, 502, 503 and 504 a tool can return depends on what it does (fetching a page, calling the execution backend, reading stored results); the code vocabulary is listed on the ErrorResponse schema.

---

[API](https://skmtc.dev/crawlforge/apis/crawlforge-rest-api.md) · [All operations](https://skmtc.dev/crawlforge/apis/crawlforge-rest-api/llms.txt) · [OpenAPI document](https://skmtc.dev/crawlforge/apis/crawlforge-rest-api/revisions/a5532fa8d5d5?raw)
