Unit and Currency Normalizer — NL/EU Notation Parser
Pricing
from $2.00 / 1,000 normalized records
Unit and Currency Normalizer — NL/EU Notation Parser
Parses NL/EU amount/unit text ('3.500 m²', '€1,2 mln', '15 ha', '2,5 ton') into structured number, category (area/weight/volume/length/percentage/currency), and optional normalized fields. Batch mode, optional ECB EUR conversion, deterministic, side-effect-free — built for AI-agent pipelines.
Pricing
from $2.00 / 1,000 normalized records
Rating
0.0
(0)
Developer
Dennis
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
5 days ago
Last modified
Categories
Share
Parses free text with amounts and units in Dutch/European notation (e.g. "3.500 m² grond", "€1,2 mln", "250.000,- excl. btw", "15 ha", "2,5 ton", "12,5%") into a structured result: parsed value, detected unit, unit category (area / currency / weight / volume / length / percentage / unknown), optional ISO currency code, optional normalized value/unit, optional ECB reference rate, and optional EUR conversion. Pure parsing logic — no API keys required; the optional ECB rate lookup uses the free, unkeyed ECB SDMX service. Designed as a deterministic, side-effect-free input-processing step for AI-agent pipelines (before comparison, aggregation, or filtering) so parse errors (like a factor-1000 mistake from dot/comma confusion) never reach downstream logic silently.
When should an AI agent use this?
- "Convert '3.500 m² grond' and '15 ha' to the same base unit so I can compare them."
- "I have property listings in free Dutch text with amounts like '€1,2 mln' and '250.000,- excl. btw' — parse the numeric value and currency."
- "Before filtering real-estate records, normalize every area mention to m² and flag the confidence of each parse."
- "I have a batch of tender values in mixed currencies — convert each amount to EUR using today's ECB reference rates."
- "Normalize '500 l' and '2,5 m³' to a common volume unit so I can sum them for a logistics report."
- "Extract the numeric value and unit from a sentence like '2,5 ton staalschroot' for a materials-monitoring agent, and warn me if the parse is ambiguous."
What this Actor does
- Parses NL/EU number notation: dot (
.) = thousand separator, comma (,) = decimal separator. - Detects units across six categories:
- Area:
m²/m2,ha,km²/km2(normalized tom²) - Weight:
kg,g,ton/t(normalized tokg) - Volume:
m³/m3,l/liter(normalized tom³) - Length:
km(normalized tom) - Percentage:
%
- Area:
- Detects currency symbols (
€,$,£) and maps to ISO codes (EUR,USD,GBP). - Detects multipliers (
k,mln,mld) and scales the value accordingly. - Returns a
confidencefield (high/medium/low) per result. - Returns
parseWarnings(e.g.no_recognized_unit,multiple_numbers_found_picked_first_N) when the parse is incomplete or ambiguous. - Optional
currencyConversionflag: whentrue, fetches the latest ECB reference rate and addsecbRate,ecbRateValue,ecbRateCurrency,ecbRateDate, andnormalizedCurrencyValue(the amount expressed in EUR). - Batch mode: pass an array of texts (
texts) — each item produces one dataset record.
Input
| Field | Type | Description |
|---|---|---|
text | string | Single free text with amount and/or unit in NL/EU notation. Backward compatible. |
texts | array of strings | Batch of texts to normalize in one run. If only text is given, it is treated as a single-item texts array. |
currencyConversion | boolean | If true, fetch the ECB reference rate for detected currencies and add ecbRate + normalizedCurrencyValue. Default false. |
Output
{"sourceText": "3.500 m² grond","value": 3500,"unit": "m²","unitCategory": "area","normalizedValue": 3500,"normalizedUnit": "m²","confidence": "high","parseWarnings": [],"currencyConversionRequested": false}
With currencyConversion: true on a currency item:
{"sourceText": "$1.000.000","value": 1000000,"unit": "$","unitCategory": "currency","isoCurrency": "USD","confidence": "medium","ecbRate": { "rate": 0.92, "currency": "USD", "date": "2026-09-17", "source": "ecb-sdmx" },"ecbRateValue": 0.92,"ecbRateCurrency": "USD","ecbRateDate": "2026-09-17","normalizedCurrencyValue": 920000}
Fields:
sourceText— original input.value— parsed numeric value (after multiplier, before unit normalization).unit— detected unit string.unitCategory—area|currency|weight|volume|length|percentage|unknown.normalizedValue— value converted to base unit (m²for area,kgfor weight,m³for volume,mfor length). Only for recognized categories.normalizedUnit— base unit. Only for recognized categories.isoCurrency—EUR,USD,GBP, etc. Only when a currency symbol is detected.confidence—high(unit recognized),medium(currency without unit),low(unknown / no recognizable number).parseWarnings— array of human-readable warnings when the parse is incomplete or ambiguous.ecbRate/ecbRateValue/ecbRateCurrency/ecbRateDate— ECB reference-rate data (only whencurrencyConversion: true).normalizedCurrencyValue— the amount expressed in EUR (value × ECB rate). Only when both rate and value are available.
Use cases
- Real-estate data cleaning: Normalize area descriptions in listings (NL property ads, appraisal reports) to a single
m²column for comparison or aggregation. - Agent pipeline pre-processing: Before an agent compares property values, runs a budget filter, or aggregates tender amounts, run this actor to eliminate silent parse errors from NL/EU notation.
- Currency monitoring: Convert mixed-currency amounts to EUR using ECB reference rates for cross-border tender or budget comparison.
- Material / logistics parsing: Convert
ton,kg,l,m³to a single base value for reporting. - Batch ingestion: Normalize a whole CSV/JSON column of free-text amounts in one API call.
Pricing
- Actor Start: $0.00005 (Apify default)
- Normalized record: $0.002 per result
The only external network call is the optional ECB reference-rate lookup (when currencyConversion: true); it is free and unkeyed, so there is no variable external cost.
Legal
No personal data, no scraping, no external data-source access during parsing. The optional ECB reference-rate lookup uses the free, public, unkeyed ECB SDMX REST service (data-api.ecb.europa.eu/service) with published open-data terms. No user-registration or licensing restrictions apply for this usage pattern.
FAQ
Q: Does it handle "250.000,- excl. btw"?
A: Yes — the trailing ,- is stripped, the value is parsed as 250000, and the decimal/comma rules are applied correctly.
Q: What about ambiguous currency like $?
A: Mapped to USD as the most common default. If the input contains an explicit ISO code (e.g. USD 500), future versions may prefer that.
Q: How do I convert a batch of amounts to EUR?
A: Set currencyConversion: true and pass all texts in the texts array. Each currency item gets ecbRate, ecbRateValue, and normalizedCurrencyValue (amount in EUR).
Q: How accurate is the unit detection?
A: Units are matched as a token directly after the number (e.g. 3.500 m²), which avoids substring false-positives (l in mln, t in beton). Ambiguous or incomplete parses are reported via confidence and parseWarnings so downstream logic can decide.
Related Actors
- url-to-structured-fact — Verifies a URL and delivers structured source metadata; pairs well when the text being parsed comes from a web source this actor has just verified.
Zoekwoorden: parser, eenheid, valuta, m², ha, euro, bedrag, NL-notatie, agent-tool, normalisatie, volume, m³, liter, percentage
Keywords
parser, normalization, currency, units, NL, EU, amount, text-parse, agent-tool, developer-tools, real-estate, property, m², ha, ton, kg, m³, liter, km, percentage, euro, euro-reference-rates, batch
Changelog
0.2.0
- Batch mode:
textsarray input; each item produces one dataset record (textremains backward compatible). - More unit categories: volume (
m³,m3,l/liter→m³), length (km→m), percentage (%). - Full EUR conversion: when
currencyConversion: true, addsnormalizedCurrencyValue(amount in EUR) plus flatecbRateValue/ecbRateCurrency/ecbRateDatefields for MCP-friendly, non-nested output. parseWarnings: array of warning codes when the parse is incomplete or ambiguous (no_recognized_unit,multiple_numbers_found_picked_first_N).- Unit matching hardened: units are matched as a token directly after the number (regex with numeric prefix + word boundary), eliminating substring false-positives (
linmln,tinbeton,kminside words). - Tests: ECB fetch no longer depends on live network — replaced with a real-response fixture (
tests/fixtures/ecb_usd.csv); 18 tests green.
0.1.1
- V1.1 — ECB SDMX 2.1 REST-integratie (
ecb.ts): bijcurrencyConversion: truewordt de meest recente ECB-referentiekoers opgehaald (https://data-api.ecb.europa.eu/service/data/EXR) en alsecbRate(rate, currency, date, source) toegevoegd aan de output. Alleen bij valuta-items; bij fouten of onbekende valuta blijftecbRateweg zonder crash. Live probe bevestigd.
0.1.0
- Initial release: NL/EU number parsing (dot = thousand, comma = decimal), unit detection (m², ha, km², kg, g, ton, t), currency symbol detection (€/$/£ → EUR/USD/GBP), multiplier detection (k, mln, mld), area/weight normalization to base units, confidence scoring.