QVeris

Free News Sentiment API

Determine what the free plan actually returns, whose sentiment is scored, and whether every result can be traced back to a dated news article.

Free news sentiment API flow from news articles through a GET endpoint to sentiment labels and JSON scores

What “free” must include for a news sentiment API

A zero-dollar signup is only the first filter. The useful question is whether the free response contains both a traceable news record and an interpretable sentiment result. Some plans expose headlines but reserve sentiment for paid access; others score text you submit without supplying any news.

News entitlement
Identify whether the plan returns headlines, snippets, URLs, licensed full text, or only metadata.
Sentiment entitlement
Confirm that labels and numeric scores are present in the free response, not merely advertised for the product.
Usage entitlement
Separate evaluation access from production, redistribution, model training, and commercial rights.

Choose the sentiment grain before comparing APIs

“Positive” is incomplete unless the response says what the label describes. One article can be optimistic about an industry, negative for one company, and neutral toward another. Match the scoring unit to the decision your application makes.

Article-level sentiment for document triage

Use one score per story when the product sorts reading queues, highlights tone, or summarizes a collection. Record the article ID so later corrections remain traceable.

Entity-level sentiment for company or ticker impact

Require an entity identifier and a separate score for every matched company, security, person, or organization. This prevents a document-wide label from being applied to the wrong subject.

Topic-level sentiment for narrative monitoring

Topic scores can track themes such as regulation or supply chains, but the provider should disclose how articles are grouped and how duplicate coverage affects the aggregate.

Choose between bundled sentiment and a two-stage pipeline

A free news sentiment API can mean three different products: an endpoint that returns licensed news with scores, a classifier that scores text supplied by your application, or a workflow that combines a news feed with a separate model. Choose the architecture before comparing quotas. Otherwise, a generous text-classification allowance may look attractive even though it provides no articles, entity mapping, or publication metadata.

Bundled news and sentiment

Best for prototypes and monitoring dashboards that need one response with headlines, timestamps, entities, labels, and scores. Integration is faster, but the provider controls publisher coverage, model behavior, score scale, corrections, and historical depth. Confirm that the free response—not only the product page—contains both the article evidence and sentiment fields.

News feed plus external classifier

Best when the application already has suitable news rights or needs to compare models. You control prompts, labels, confidence thresholds, and versioning, but must clean article text, detect entities, remove duplicates, respect language coverage, and maintain two separate failure paths.

Self-hosted financial-language model

Best for controlled workloads, private text, repeatable backtests, or custom taxonomies such as guidance cuts and regulatory risk. Model weights may be free, but inference, monitoring, retraining, data rights, and operations are not. A model trained on English filings should not be assumed to score multilingual news correctly.

Decision rule: use a bundled endpoint when speed and a single contract matter most; separate retrieval from scoring when evidence control, model choice, or domain-specific labels matter more.

Trace every score back to news evidence

A sentiment number without provenance cannot be audited. For each record, retain the canonical article URL, publisher, publication time, provider ingestion time, language, matched entity or topic, and sentiment output. The three timestamps—publication, ingestion, and request—answer different freshness questions.

Canonicalize syndicated stories

Wire stories may appear under many URLs. Compare canonical URLs, source IDs, normalized titles, and timestamps before counting them as separate evidence.

Keep missing sentiment explicit

A null score can mean unsupported language, no matched entity, insufficient text, or a processing failure. Do not silently convert it to neutral.

Preserve score semantics

Store the documented scale and threshold. A value of 0.7 is meaningless if one provider uses −1…1 and another reports class probability.

Validate sentiment quality before trusting the score

A sentiment endpoint can return valid JSON and still produce a poor financial signal. Evaluate it on articles that resemble the application’s real workload, not on a handful of obvious positive and negative headlines. Build a labeled test set with publication timestamps frozen at collection time, and keep the raw text or permitted evidence needed to reproduce each judgment.

Separate direction from relevance

A positive story about an industry is not automatically positive for every company mentioned. Score whether the article is relevant to the target first, then evaluate direction and strength for that entity. Report entity-linking errors separately from classification errors.

Include difficult financial language

Test negation, cautious guidance, beat-but-guide-down results, litigation, restructuring, analyst quotes, rumors, and articles that compare several companies. Headlines such as “loss narrows” or “revenue beats while margins fall” expose weaknesses hidden by simple polarity examples.

Measure more than overall accuracy

Review precision and recall by class, confusion between neutral and weakly directional stories, confidence calibration, unsupported-language rates, and failure rates by publisher. When positive stories dominate the sample, a high accuracy number can conceal weak detection of adverse events.

Prevent time leakage in backtests

Use the first observed publication or ingestion time, not a later corrected timestamp. Freeze the model version, thresholds, entity dictionary, and deduplication rules used for each historical run. Reprocessing old stories with a newer model creates a different dataset and must be versioned.

Define a human-review boundary

Route low-confidence, high-impact, contradictory, or multi-entity stories for review. The objective is not to force a label onto every article; it is to know which outputs are safe for automated filtering and which need evidence-aware judgment.

Build an evidence matrix for the free tier

Do not compare providers using plan names alone. Capture one documented statement and one observed response for every requirement. If the two disagree, treat the observed schema as a test result—not permission to ignore the contract.

DecisionEvidence to captureReject when
CoverageNamed publishers, regions, languages, categories, and exclusionsRequired sources cannot be identified
Scoring unitArticle, entity, ticker, topic, plus label and numeric scaleThe scored subject is ambiguous
FreshnessPublication time, ingestion time, update interval, and delay policyOnly request time is available
Historical accessEarliest date, rolling window, archive endpoint, and pagination capBacktests would contain undocumented gaps
Free allowanceRequests, articles per response, reset schedule, and disabled fieldsA representative sample cannot be retrieved
RightsDevelopment, production, storage, display, attribution, and redistribution termsThe intended use is not expressly allowed

Normalize a news sentiment response without losing evidence

Keep a provider-neutral record for application logic and retain the provider payload separately where the terms permit. The normalized object below makes article identity, scoring target, timestamps, and scale explicit.

from datetime import datetime, timezone

def normalize_news_sentiment(article, provider_name):
    target = article.get("entity") or article.get("topic")
    score = article.get("sentiment_score")

    return {
        "article": {
            "id": article["id"],
            "canonical_url": article["url"],
            "publisher": article["publisher"],
            "published_at": article["published_at"],
            "language": article.get("language"),
        },
        "sentiment": {
            "target": target,
            "label": article.get("sentiment_label"),
            "score": score,
            "scale": article.get("score_scale"),
            "is_missing": score is None,
        },
        "provenance": {
            "provider": provider_name,
            "ingested_at": article.get("ingested_at"),
            "requested_at": datetime.now(timezone.utc).isoformat(),
        },
    }

This is a normalization pattern, not a provider endpoint. Map only documented fields, preserve null values, and keep the provider’s original identifiers so records can be reconciled later.

Turn article sentiment into a defensible time-series signal

Do not average every score returned for a ticker. News volume changes by company and event, syndicated stories can multiply one fact into dozens of rows, and old articles should not influence a current signal forever. Define the aggregation contract before using sentiment in alerts, rankings, or backtests.

Deduplicate first
Cluster canonical URLs, source identifiers, near-identical titles, body hashes, and publication times. Keep the earliest observable story as the event anchor and record later syndication separately.
Use event time
Aggregate in explicit windows such as 15 minutes, one hour, one trading session, or one day. State how after-hours stories, weekends, and market holidays map to the next tradable period.
Weight with care
Possible weights include entity relevance, model confidence, recency, source class, and event novelty. Never treat a confidence score as expected return, and document caps so a burst of low-quality stories cannot dominate.
Publish context with the score
Return article count, unique-event count, positive/negative mix, time window, last update, missing-language count, and model version beside the aggregate. A value such as 0.42 is not actionable without that context.

Backtest rule: compare the signal with a timestamp-aligned baseline and transaction-aware outcome, then run ablation tests without confidence weighting, source weighting, or duplicate removal. This shows which design choice creates value and which merely makes the chart look smoother.

Use QVeris to discover the capability, then verify the evidence

QVeris helps agents search for capabilities rather than hard-coding a provider name. For this use case, describe the required input and output precisely: topic or entity query, publication-time filters, traceable article metadata, and article- or entity-level sentiment.

Discovery does not replace due diligence. Inspect the selected tool’s current authentication, schema, quotas, publisher coverage, and rights before sending production traffic.

FAQ

Can I get news and sentiment from one free API?

Sometimes. A provider may bundle articles and sentiment in one response, exclude sentiment from its free plan, or require a separate classifier. Confirm the live response schema and plan restrictions.

Should news sentiment be scored per article or per company?

Use article-level scores for document filtering and entity-level scores when one story discusses several companies differently. A single document label can hide opposing effects.

How can I verify that news sentiment data is fresh?

Compare the publisher timestamp, provider ingestion timestamp, and request time. Also check update frequency, cache behavior, timezone handling, and whether the free plan is delayed.

What fields should a news sentiment API response include?

Useful records identify the article, publisher, publication time, language, matched entity or topic, sentiment label, numeric score, and the model or endpoint version when available.

Can free news sentiment data be used commercially?

Not automatically. Free access may be limited to evaluation, development, attribution, or non-commercial use. Review both news-content rights and API plan terms.

How does QVeris help with news sentiment APIs?

QVeris helps agents discover capabilities and inspect tool inputs and outputs. Provider availability, price, data rights, and sentiment methodology still require verification in current provider documentation.

Verification sources

Free News Sentiment API | QVeris Guides