Text Analytics:
Turn Any Text into
Structured Data

The same NLP models that enrich news from 150,000+ publishers are available for your own content. Annotate, categorize, extract entities, score sentiment, detect language and parse articles — each with a single REST call.

Microsoft has agreed to acquire the London-based AI startup for $2.4 billion, its largest European deal to date, CEO Satya Nadella said.
POST /api/v1/ner
{ "entities": [
    { "text": "Microsoft", "type": "ORGANIZATION" },
    { "text": "London", "type": "CITY" },
    { "text": "$2.4 billion", "type": "MONEY" },
    { "text": "CEO", "type": "TITLE" },
    { "text": "Satya Nadella", "type": "PERSON" } ] }

Semantic annotation

POST/api/v1/annotate

Identify the people, organizations, locations and things mentioned in a document and disambiguate them to unique Wikipedia and WikiData entries. Annotation works in over 100 languages; each detected concept carries the exact character span where it appears, a link to Wikipedia in the document's language, a secUrl link to the English Wikipedia and a relevance weight — so "Azure's" resolves to Microsoft Azure, not the color.

Sample text · annotated

Microsoft has agreed to acquire the London-based AI startup for $2.4 billion, its largest European deal to date. CEO Satya Nadella said the acquisition will strengthen Azure's machine learning capabilities and create 300 new jobs in the United Kingdom.

Microsoft Q2283
en.wikipedia.org/wiki/Microsoft
Satya Nadella Q7426870
en.wikipedia.org/wiki/Satya_Nadella
Machine learning Q2539
en.wikipedia.org/wiki/Machine_learning

POST /api/v1/annotate200 OK · application/json

{
  "annotations": [
    {
      "title": "Microsoft",
      "url": "http://en.wikipedia.org/wiki/Microsoft",
      "wikiDataItemId": "Q2283",
      "dbPediaTypes": ["Agent", "Organisation", "Company"],
      "support": [{ "chFrom": 0, "chTo": 8,
                    "text": "Microsoft" }],
      "wgt": 0.667
    },
    {
      "title": "Satya Nadella",
      "url": "http://en.wikipedia.org/wiki/Satya_Nadella",
      "wikiDataItemId": "Q7426870",
      "support": [{ "chFrom": 117, "chTo": 129,
                    "text": "Satya Nadella" }],
      "wgt": 0.357
    },
    { "title": "Microsoft Azure", "wikiDataItemId": "Q725967", … },
    { "title": "Machine learning", "wikiDataItemId": "Q2539", … }
  ],
  "language": "en"
}

Read the documentation Try semantic annotation in the sandbox →

Categorization

POST/api/v1/categorize

Classify content into predefined taxonomies and get a ranked list of categories with confidence scores. Choose the taxonomy that fits your use case: DMOZ (5,000+ categories in 3 levels, English documents), news (8 top-level news categories, works in any language) or IPTC subject codes (1,000+ categories maintained by the IPTC news-media standards body). Works best on article-length documents.

Computed categories · news taxonomy

news/Technology 0.6768
news/Business 0.3010

Same text · dmoz taxonomy

dmoz/Computers/Artificial Intelligence 0.3415
dmoz/…/Machine Learning 0.3064

Same text · iptc taxonomy

iptc/…/computing and information technology 0.9793
dmoz · 5,000+ categories news · 8 categories, any language iptc · 1,000+ subject codes

POST /api/v1/categorize200 OK · application/json

{
  "categories": [
    {
      "label": "news/Technology",
      "score": 0.6768,
      "uri": "news/Technology"
    },
    {
      "label": "news/Business",
      "score": 0.301,
      "uri": "news/Business"
    }
  ]
}

// taxonomy: "dmoz" on the same text
{
  "categories": [
    {
      "label": "dmoz/Computers/Artificial Intelligence",
      "score": 0.3415,
      "uri": "dmoz/Computers/Artificial_Intelligence"
    }, …
  ]
}

Read the documentation Try categorization in the sandbox →

Named entity recognition

POST/api/v1/ner

Detect the people, organizations, locations, dates, monetary amounts and other named entities in your content. Every entity comes typed and with its exact character offsets (startCh, endCh), so you can highlight, link or redact it directly in the original text. Sample documents are available in English, German, Spanish and Chinese in the sandbox.

Sample text · detected entities

Microsoft has agreed to acquire the London-based AI startup for $2.4 billion, its largest European deal to date. CEO Satya Nadella said the acquisition will strengthen Azure's machine learning capabilities and create 300 new jobs in the United Kingdom.

POST /api/v1/ner200 OK · application/json

{
  "entities": [
    { "startCh": 0, "endCh": 9,
      "type": "ORGANIZATION", "text": "Microsoft" },
    { "startCh": 36, "endCh": 42,
      "type": "CITY", "text": "London" },
    { "startCh": 64, "endCh": 76,
      "type": "MONEY", "text": "$2.4 billion" },
    { "startCh": 90, "endCh": 98,
      "type": "NATIONALITY", "text": "European" },
    { "startCh": 113, "endCh": 116,
      "type": "TITLE", "text": "CEO" },
    { "startCh": 117, "endCh": 130,
      "type": "PERSON", "text": "Satya Nadella" },
    { "startCh": 217, "endCh": 220,
      "type": "NUMBER", "text": "300" },
    { "startCh": 237, "endCh": 251,
      "type": "COUNTRY", "text": "United Kingdom" }
  ]
}

Read the documentation Try named entity recognition in the sandbox →

Sentiment analysis

POST/api/v1/sentiment

Score the sentiment of English text on a scale from −1 (very negative) to +1 (very positive). Pick the vocabulary-based method or a neural-network model, and get both the document average and a sentence-by-sentence breakdown — so one enthusiastic quote can't hide a critical paragraph.

Sentence-by-sentence sentiment

  • 0.00 The company is expected to report quarterly results on Thursday.
  • +0.80 Reviewers praised the sleek design and outstanding battery life.
  • −0.74 However, critics warned that supply chain delays could frustrate customers in the coming months.

POST /api/v1/sentiment200 OK · application/json

{
  "avgSent": 0.0197,
  "sentimentPerSent": [
    0,
    0.802,
    -0.743
  ]
}

Read the documentation Try sentiment analysis in the sandbox →

Detect language

POST/api/v1/detectLanguage

Identify the language a text is written in. The response reports how reliable the detection is and lists the most likely languages with their probabilities, each with standard ISO 639-1 and ISO 639-3 codes ready to feed into the rest of your pipeline.

Sample text

“รัฐบาลได้อนุมัติร่างกฎหมายส่งเสริมการใช้พลังงานหมุนเวียนในวันนี้”

Detected language

Thai
confidence 100%
iso1 · th iso3 · tha score · 1024

POST /api/v1/detectLanguage200 OK · application/json

[
  {
    "name": "THAI",
    "code": "th",
    "percent": 100,
    "score": 1024,
    "iso3": "tha",
    "iso1": "th"
  }
]

Read the documentation Try language detection in the sandbox →

Extract article information

POST/api/v1/extractArticleInfo

Point the API at any article URL and get the story back as clean, structured data. We crawl the page and extract the title, full body text, authors, publishing date and time, main image, outgoing links, embedded videos and the rest of the available metadata — no scraping code, no boilerplate removal, no site-specific parsers to maintain.

Input URL

https://www.bbc.com/news/articles/cjwxgz95jvgo

Extracted fields

title
US women in politics spark conversation about balancing family and career
authors
Madeline Halpert
datetime
2026-08-15T23:01:50Z
image
https://ichef.bbci.co.uk/news/1024/branded_news/cdba/live/bc3d…
body
Last summer, Representative Sara Jacobs would run up to her office… (5,800 characters)
links
18 outgoing links with anchor texts

POST /api/v1/extractArticleInfo200 OK · application/json

{
  "title": "US women in politics spark conversation
            about balancing family and career",
  "authors": ["Madeline Halpert"],
  "date": "2026-08-15",
  "datetime": "2026-08-15T23:01:50Z",
  "image": "https://ichef.bbci.co.uk/news/1024/…",
  "body": "Last summer, Representative Sara Jacobs
           would run up to her office…",
  "links": [
    { "anchorText": "freezing her eggs",
      "url": "https://www.bbc.com/news/…" }, …
  ],
  "urlCanonical": "https://www.bbc.com/news/articles/cjwxgz95jvgo"
}

Read the documentation Try article extraction in the sandbox →

Pricing

Text analytics is billed in tokens, and each analyzed document costs only a fraction of a token — so a single token covers the analysis of many documents. The 5K plan ($90/month) includes 5,000 tokens; here is what that buys for each analyzer.

Action Tokens per document API calls with the $90 plan Price per 1,000 documents
Semantic annotation 0.04 125,000 $0.72
Categorization 0.04 125,000 $0.72
Named entity recognition 0.02 250,000 $0.36
Sentiment analysis 0.02 250,000 $0.36
Detect language 0.01 500,000 $0.18
Extract article information 0.05 100,000 $0.90

Every new account starts with 2,000 free tokens — no credit card required — enough for 100,000 named-entity calls or 40,000 article extractions. Plans and pricing page show all the available pricing information.

One key, every analyzer

Start Analyzing Text in Minutes

Your NewsAPI.ai key unlocks all six text analytics endpoints alongside news search — register and get 2,000 free tokens, no credit card required.