Text Entity Extractor - Emails, Phones, URLs, Dates, Money avatar

Text Entity Extractor - Emails, Phones, URLs, Dates, Money

Pricing

from $0.64 / 1,000 scanned texts

Go to Apify Store
Text Entity Extractor - Emails, Phones, URLs, Dates, Money

Text Entity Extractor - Emails, Phones, URLs, Dates, Money

Regex extraction of 11 structured entity types from up to 100 texts per run: emails, phones, URLs, IPs, dates, times, money, percentages, hashtags, mentions + Luhn-checked ALWAYS-MASKED cards. Not model NER — exact, private, in-process. $0.0008 per text all types, junk entries never charged.

Pricing

from $0.64 / 1,000 scanned texts

Rating

0.0

(0)

Developer

Broke to Built

Broke to Built

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

Text Entity Extractor — Emails, Phones, URLs, Dates, Money (Regex, Not NER)

Pull every structured entity out of raw text as clean JSON: emails, phone numbers, URLs, IPv4/IPv6, dates, times, money amounts, percentages, hashtags, @mentions — and Luhn-validated payment cards, which are detected but always masked. Up to 100 texts per run, online, by API, or as an agent tool via Apify MCP.

What this is — stated plainly: deterministic regex + rule extraction of structured patterns. It is NOT a machine-learning NER model: it does not find people, organizations, or locations, and it makes no model-accuracy claims. What it does instead is be exact, fast, private (no model API calls, text never leaves the run), and reproducible — the right tool when the entities you want have a shape.

What you get

  • entities — per type, deduplicated: emails, phones, urls, ips, dates, times, money, percentages, hashtags, mentions, cards
  • cards — Luhn-checked candidates returned as {masked, last4, length} only. The full number is never stored — it is redacted from the entities AND from the echoed input text (this is asserted by our automated release test).
  • counts / totalEntities — per-type and total tallies
  • types input lets you request a subset (e.g. only ["emails","phones"])
  • Fail-soft: a non-string entry never fails the run — it returns {ok: false, error} and is never charged.

Input

{ "text": "Email ada@example.com or call +1 (555) 123-4567 before 2024-03-15. Budget: $12,500.50.", "types": ["emails", "phones", "dates", "money"] }

Bulk: { "texts": ["...", "..."], "maxTexts": 100 }

Output (real run, trimmed)

{
"ok": true,
"entities": {
"emails": ["ada@example.com"],
"phones": ["+1 (555) 123-4567"],
"dates": ["2024-03-15"],
"money": ["$12,500.50"],
"percentages": ["12.5%"],
"urls": ["https://example.com/report"],
"cards": [{ "masked": "************1111", "last4": "1111", "length": 16 }]
},
"counts": { "emails": 1, "phones": 1, "dates": 1, "money": 1 },
"totalEntities": 10
}

Pricing

$0.0008 per text scanned — all 11 entity types included. No start fee. Non-string entries are never charged.

Measured context (2026-08-07): model-based NER actors charge $0.01+ per call (alizarin hugging-face ner $0.01 + $0.1 start) with the direct regex-extractor incumbents unpriced. For pattern entities this does the job at a tenth of model pricing — and for people/org/location entities you genuinely need an NER model, which this is not.

Honest limits

  • Regex, not comprehension: "May 2024 report" contains no extractable date in a supported format; "call me at the office" contains no phone. Formats covered: ISO/slash/dot/'Month DD, YYYY' dates, international phone shapes (7-15 digits), major currency symbols/codes.
  • Phone detection is the noisiest category by nature (any digit run can look phone-ish); dates and money are stripped first to reduce false positives, but expect to post-filter phones for your locale.
  • Card detection is a PII-flagging aid (Luhn + length): it tells you card-like data is present and where — masked — so you can act; it is not a PCI compliance tool.

FAQ

Does it find people or company names? No — that requires a model NER system, and we won't pretend regex does it. If your pipeline needs both, run this for structured entities and a model for names.

Is my text sent to any AI service? No. Extraction is pure in-process pattern matching; the text goes only into your run's private dataset (with card numbers redacted).

What's the card masking for? Compliance sweeps: find out whether card numbers are leaking into tickets, logs, or scraped content — without your scanning tool itself becoming the leak.

Can I extract only some entity types? Yes — pass types with any subset; extraction and billing stay the same per text.

Why did some rows come back ok: false? Those entries were not text strings. Recorded, never charged.

Use from code or AI agents

curl -s "https://api.apify.com/v2/acts/EliAI~text-entity-extractor/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
-X POST -H 'Content-Type: application/json' \
-d '{"text": "Reach ada@example.com / +1 555 123 4567, budget $10,000 by 2024-06-30"}'

Agents: connect Apify MCP and call the EliAI/text-entity-extractor tool.

  • Capability: regex extraction of structured entities (11 types incl. masked cards) from one or many texts — NOT model NER, no people/org/location entities
  • Required input: text (string) or texts (array); optional types subset
  • Returns: one record per text; entities + counts summarize findings
  • Bounded: 100 texts per run; failures isolate per text
  • Side effects: none (in-process; card numbers redacted from output)