Back to Tools

Entity Extractor

Use cases

Optimising content for semantic search and Knowledge Graph Identifying missing entities compared to competitors Building comprehensive topic coverage Understanding what entities Google associates with a topic

Extracts named entities using spaCy NLP with selectable models (sm/md/lg for speed vs accuracy tradeoff).

Recognises 11 entity types: PERSON, ORG, GPE, LOC, PRODUCT, EVENT, WORK_OF_ART, LAW, LANGUAGE, NORP, and FAC.

Supports text input, HTML (strips scripts, styles, nav, header, footer, and list/table elements, so list and table content is excluded from analysis), and batch CSV/Excel processing.

Streamlit App

Platform

Browser-based (no installation required)

Input

Text, HTML, or CSV/Excel for batch

Output

Entities by type with frequency counts (CSV)

Launch App View Source

Features

  • spaCy NLP with 3 model sizes (en_core_web_sm/md/lg)
  • 11 entity types recognised (PERSON, ORG, GPE, LOC, PRODUCT, etc.)
  • HTML cleaning strips scripts, styles, nav, header, footer, lists and tables
  • Batch processing via CSV/Excel upload with optional ID column
  • Text truncation limit (100k chars) for memory efficiency

How to use

  1. 1 Select spaCy model size based on speed vs accuracy needs
  2. 2 Paste text/HTML or upload CSV/Excel for batch processing
  3. 3 Select entity types to extract (filter by PERSON, ORG, etc.)
  4. 4 Run extraction and review entities grouped by type
  5. 5 Download full results CSV or aggregated entity counts

Frequently asked questions

Why are entities from my bullet lists and tables missing?
When you feed it HTML, the cleaning step removes not just scripts, styles, nav, header and footer but also all ol, ul and table elements, so anything that only appears in a bulleted list or a table never reaches the extractor. If your entities live in list or table content (spec sheets, feature lists), paste the text as plain text instead of HTML.
Do I need to install anything besides spaCy?
Yes, the language model itself. Each of the three selectable models must be downloaded separately with python -m spacy download en_core_web_sm (or _md / _lg); the app stops with an error if the selected model is not installed. All three are English models, so non-English content will extract poorly.
Can it extract dates, prices or quantities?
No. DATE, TIME, PERCENT, MONEY, QUANTITY, ORDINAL and CARDINAL are deliberately excluded from the selectable entity types, leaving the 11 name-like types (PERSON, ORG, GPE, LOC, PRODUCT, EVENT, WORK_OF_ART, LAW, LANGUAGE, NORP, FAC).
Is there a size limit per document?
Each text is truncated to 100,000 characters before processing to keep memory in check, so entities beyond that point in very long pages are not counted. There is no limit on the number of rows in a batch file, but rows are processed one at a time.
What do the two batch downloads contain?
The full results file has one row per entity occurrence with its source identifier (the ID column you chose, such as the URL), useful for per-page analysis. The entity counts file aggregates across all sources. The on-screen top entities table is capped at 50 rows, but the downloads are complete.

Need something built for your business?

This tool started as bespoke client work. I build custom scripts, data pipelines, and full apps for SEO and product data problems that off-the-shelf tools don't solve.

Tell Me What You Need