FINANCIAL SERVICES

Market Sentiment Analysis

Extract trading signals from news articles, financial forums, and social media. Turn market conversations into actionable sentiment data.

Market Sentiment Moves Prices

Financial news, social media chatter, and forum discussions contain valuable signals that can precede market moves. The challenge is extracting actionable insights from this unstructured data at scale.

Traditional sentiment analysis tools miss context and nuance. You need AI that understands financial language and can extract meaningful signals.

WebScraping.AI Solution

  • AI-Powered Analysis: Ask questions about financial content and get intelligent insights
  • Multi-Source Coverage: News sites, forums, social media, and blogs
  • Real-Time Extraction: Get sentiment as conversations happen
  • Structured Output: Clean JSON data ready for your models

Sentiment Data Sources

Extract sentiment from across the financial web

Financial News

Analyze news articles for sentiment, key events, and market-moving information.

Trading Forums

Monitor discussions on Reddit, StockTwits, and other trading communities.

Social Media

Track financial influencers and trending stock discussions.

Analyst Reports

Extract insights from research reports and analyst commentary.

Code Examples

Extract market sentiment with AI

Score sentiment from a financial news article
curl -G "https://api.webscraping.ai/ai/fields" \
  --data-urlencode "api_key=YOUR_API_KEY" \
  --data-urlencode "url=https://financial-news.com/article/tech-earnings" \
  --data-urlencode "fields[headline]=The article headline" \
  --data-urlencode "fields[overall_sentiment]=bullish, bearish, or neutral" \
  --data-urlencode "fields[sentiment_score]=Score from -1 (very bearish) to 1 (very bullish)" \
  --data-urlencode "fields[key_points]=Main points that affect sentiment" \
  --data-urlencode "fields[mentioned_tickers]=Stock symbols mentioned" \
  --data-urlencode "fields[price_targets]=Any price targets mentioned" \
  --data-urlencode "fields[catalysts]=Upcoming events or catalysts mentioned"
# Response:
# {
#   "headline": "Tech Giant Beats Q4 Expectations",
#   "overall_sentiment": "bullish",
#   "sentiment_score": 0.75,
#   "key_points": ["Revenue beat by 12%", "Strong guidance", "New product launch"],
#   "mentioned_tickers": ["TECH", "AAPL", "MSFT"],
#   "price_targets": "$185 (raised from $160)",
#   "catalysts": ["Product launch in March", "Analyst day next week"]
# }
# pip install webscraping_ai
# https://pypi.org/project/webscraping-ai/
from webscraping_ai import Client

client = Client(api_key="YOUR_API_KEY")
result = client.fields(
    "https://financial-news.com/article/tech-earnings",
    fields={
        "headline": "The article headline",
        "overall_sentiment": "bullish, bearish, or neutral",
        "sentiment_score": "Score from -1 (very bearish) to 1 (very bullish)",
        "key_points": "Main points that affect sentiment",
        "mentioned_tickers": "Stock symbols mentioned",
        "price_targets": "Any price targets mentioned",
        "catalysts": "Upcoming events or catalysts mentioned",
    },
)
print(result)
# Response:
# {
#   "headline": "Tech Giant Beats Q4 Expectations",
#   "overall_sentiment": "bullish",
#   "sentiment_score": 0.75,
#   "key_points": ["Revenue beat by 12%", "Strong guidance", "New product launch"],
#   "mentioned_tickers": ["TECH", "AAPL", "MSFT"],
#   "price_targets": "$185 (raised from $160)",
#   "catalysts": ["Product launch in March", "Analyst day next week"]
# }
// npm install webscraping-ai
// https://www.npmjs.com/package/webscraping-ai
import { WebScrapingAI } from 'webscraping-ai';

const client = new WebScrapingAI({ apiKey: 'YOUR_API_KEY' });
const result = await client.fields({
  url: 'https://financial-news.com/article/tech-earnings',
  fields: {
    headline: 'The article headline',
    overall_sentiment: 'bullish, bearish, or neutral',
    sentiment_score: 'Score from -1 (very bearish) to 1 (very bullish)',
    key_points: 'Main points that affect sentiment',
    mentioned_tickers: 'Stock symbols mentioned',
    price_targets: 'Any price targets mentioned',
    catalysts: 'Upcoming events or catalysts mentioned',
  },
});
console.log(result);
// Response:
// {
//   "headline": "Tech Giant Beats Q4 Expectations",
//   "overall_sentiment": "bullish",
//   "sentiment_score": 0.75,
//   "key_points": ["Revenue beat by 12%", "Strong guidance", "New product launch"],
//   "mentioned_tickers": ["TECH", "AAPL", "MSFT"],
//   "price_targets": "$185 (raised from $160)",
//   "catalysts": ["Product launch in March", "Analyst day next week"]
// }
<?php
// composer require webscraping-ai/webscraping-ai-php
// https://packagist.org/packages/webscraping-ai/webscraping-ai-php
require 'vendor/autoload.php';

use WebScrapingAI\Client;

$client = new Client('YOUR_API_KEY');
$result = $client->fields('https://financial-news.com/article/tech-earnings', [
    'headline'          => 'The article headline',
    'overall_sentiment' => 'bullish, bearish, or neutral',
    'sentiment_score'   => 'Score from -1 (very bearish) to 1 (very bullish)',
    'key_points'        => 'Main points that affect sentiment',
    'mentioned_tickers' => 'Stock symbols mentioned',
    'price_targets'     => 'Any price targets mentioned',
    'catalysts'         => 'Upcoming events or catalysts mentioned',
]);
print_r($result);
// Response:
// {
//   "headline": "Tech Giant Beats Q4 Expectations",
//   "overall_sentiment": "bullish",
//   "sentiment_score": 0.75,
//   "key_points": ["Revenue beat by 12%", "Strong guidance", "New product launch"],
//   "mentioned_tickers": ["TECH", "AAPL", "MSFT"],
//   "price_targets": "$185 (raised from $160)",
//   "catalysts": ["Product launch in March", "Analyst day next week"]
// }
# gem install webscraping_ai
# https://rubygems.org/gems/webscraping_ai
require 'webscraping_ai'

client = WebScrapingAI::Client.new(api_key: 'YOUR_API_KEY')
result = client.fields(
  'https://financial-news.com/article/tech-earnings',
  fields: {
    headline:           'The article headline',
    overall_sentiment:  'bullish, bearish, or neutral',
    sentiment_score:    'Score from -1 (very bearish) to 1 (very bullish)',
    key_points:         'Main points that affect sentiment',
    mentioned_tickers:  'Stock symbols mentioned',
    price_targets:      'Any price targets mentioned',
    catalysts:          'Upcoming events or catalysts mentioned',
  }
)
puts result.inspect
# Response:
# {
#   "headline": "Tech Giant Beats Q4 Expectations",
#   "overall_sentiment": "bullish",
#   "sentiment_score": 0.75,
#   "key_points": ["Revenue beat by 12%", "Strong guidance", "New product launch"],
#   "mentioned_tickers": ["TECH", "AAPL", "MSFT"],
#   "price_targets": "$185 (raised from $160)",
#   "catalysts": ["Product launch in March", "Analyst day next week"]
# }
// go get github.com/webscraping-ai/webscraping-ai-go/v4
// https://pkg.go.dev/github.com/webscraping-ai/webscraping-ai-go/v4
package main

import (
    "context"
    "fmt"

    webscrapingai "github.com/webscraping-ai/webscraping-ai-go/v4"
)

func main() {
    client, _ := webscrapingai.NewClient(&webscrapingai.Config{APIKey: "YOUR_API_KEY"})
    result, _ := client.Fields(context.Background(), &webscrapingai.FieldsOptions{
        URL: "https://financial-news.com/article/tech-earnings",
        Fields: map[string]string{
            "headline": "The article headline",
            "overall_sentiment": "bullish, bearish, or neutral",
            "sentiment_score": "Score from -1 (very bearish) to 1 (very bullish)",
            "key_points": "Main points that affect sentiment",
            "mentioned_tickers": "Stock symbols mentioned",
            "price_targets": "Any price targets mentioned",
            "catalysts": "Upcoming events or catalysts mentioned",
        },
    })
    fmt.Println(result.Result)
}
// Response:
// {
//   "headline": "Tech Giant Beats Q4 Expectations",
//   "overall_sentiment": "bullish",
//   "sentiment_score": 0.75,
//   "key_points": ["Revenue beat by 12%", "Strong guidance", "New product launch"],
//   "mentioned_tickers": ["TECH", "AAPL", "MSFT"],
//   "price_targets": "$185 (raised from $160)",
//   "catalysts": ["Product launch in March", "Analyst day next week"]
// }
// Maven: ai.webscraping:webscraping-ai:4.0.0
// https://central.sonatype.com/artifact/ai.webscraping/webscraping-ai
import ai.webscraping.Client;
import ai.webscraping.Config;
import ai.webscraping.option.FieldsOptions;
import ai.webscraping.result.FieldsResult;

Client client = new Client(Config.builder().apiKey("YOUR_API_KEY").build());
FieldsResult result = client.fields(FieldsOptions.builder()
    .url("https://financial-news.com/article/tech-earnings")
    .addField("headline", "The article headline")
    .addField("overall_sentiment", "bullish, bearish, or neutral")
    .addField("sentiment_score", "Score from -1 (very bearish) to 1 (very bullish)")
    .addField("key_points", "Main points that affect sentiment")
    .addField("mentioned_tickers", "Stock symbols mentioned")
    .addField("price_targets", "Any price targets mentioned")
    .addField("catalysts", "Upcoming events or catalysts mentioned")
    .build());
System.out.println(result.getResult());
// Response:
// {
//   "headline": "Tech Giant Beats Q4 Expectations",
//   "overall_sentiment": "bullish",
//   "sentiment_score": 0.75,
//   "key_points": ["Revenue beat by 12%", "Strong guidance", "New product launch"],
//   "mentioned_tickers": ["TECH", "AAPL", "MSFT"],
//   "price_targets": "$185 (raised from $160)",
//   "catalysts": ["Product launch in March", "Analyst day next week"]
// }
// dotnet add package WebScrapingAI
// https://www.nuget.org/packages/WebScrapingAI
using WebScrapingAI;

var client = new WebScrapingAIClient(new WebScrapingAIClientOptions { ApiKey = "YOUR_API_KEY" });
var result = await client.FieldsAsync(new FieldsRequest {
    Url = "https://financial-news.com/article/tech-earnings",
    Fields = new Dictionary<string, string> {
        ["headline"] = "The article headline",
        ["overall_sentiment"] = "bullish, bearish, or neutral",
        ["sentiment_score"] = "Score from -1 (very bearish) to 1 (very bullish)",
        ["key_points"] = "Main points that affect sentiment",
        ["mentioned_tickers"] = "Stock symbols mentioned",
        ["price_targets"] = "Any price targets mentioned",
        ["catalysts"] = "Upcoming events or catalysts mentioned",
    },
});
Console.WriteLine(result.Result);
// Response:
// {
//   "headline": "Tech Giant Beats Q4 Expectations",
//   "overall_sentiment": "bullish",
//   "sentiment_score": 0.75,
//   "key_points": ["Revenue beat by 12%", "Strong guidance", "New product launch"],
//   "mentioned_tickers": ["TECH", "AAPL", "MSFT"],
//   "price_targets": "$185 (raised from $160)",
//   "catalysts": ["Product launch in March", "Analyst day next week"]
// }
Ask the AI about retail trader sentiment
curl -G "https://api.webscraping.ai/ai/question" \
  --data-urlencode "api_key=YOUR_API_KEY" \
  --data-urlencode "url=https://trading-forum.com/discussion/market-outlook" \
  --data-urlencode "question=What is the overall sentiment in this discussion? What stocks are people most bullish/bearish on and why?"
# pip install webscraping_ai
# https://pypi.org/project/webscraping-ai/
from webscraping_ai import Client

client = Client(api_key="YOUR_API_KEY")
answer = client.question(
    "https://trading-forum.com/discussion/market-outlook",
    question="What is the overall sentiment in this discussion? What stocks are people most bullish/bearish on and why?",
)
print(answer)
// npm install webscraping-ai
// https://www.npmjs.com/package/webscraping-ai
import { WebScrapingAI } from 'webscraping-ai';

const client = new WebScrapingAI({ apiKey: 'YOUR_API_KEY' });
const answer = await client.question({
  url: 'https://trading-forum.com/discussion/market-outlook',
  question: 'What is the overall sentiment in this discussion? What stocks are people most bullish/bearish on and why?',
});
console.log(answer);
<?php
// composer require webscraping-ai/webscraping-ai-php
// https://packagist.org/packages/webscraping-ai/webscraping-ai-php
require 'vendor/autoload.php';

use WebScrapingAI\Client;

$client = new Client('YOUR_API_KEY');
$answer = $client->question(
    'https://trading-forum.com/discussion/market-outlook',
    'What is the overall sentiment in this discussion? What stocks are people most bullish/bearish on and why?',
);
echo $answer;
# gem install webscraping_ai
# https://rubygems.org/gems/webscraping_ai
require 'webscraping_ai'

client = WebScrapingAI::Client.new(api_key: 'YOUR_API_KEY')
answer = client.question(
  'https://trading-forum.com/discussion/market-outlook',
  question: 'What is the overall sentiment in this discussion? What stocks are people most bullish/bearish on and why?'
)
puts answer
// go get github.com/webscraping-ai/webscraping-ai-go/v4
// https://pkg.go.dev/github.com/webscraping-ai/webscraping-ai-go/v4
package main

import (
    "context"
    "fmt"

    webscrapingai "github.com/webscraping-ai/webscraping-ai-go/v4"
)

func main() {
    client, _ := webscrapingai.NewClient(&webscrapingai.Config{APIKey: "YOUR_API_KEY"})
    answer, _ := client.Question(context.Background(), &webscrapingai.QuestionOptions{
        URL:      "https://trading-forum.com/discussion/market-outlook",
        Question: "What is the overall sentiment in this discussion? What stocks are people most bullish/bearish on and why?",
    })
    fmt.Println(answer)
}
// Maven: ai.webscraping:webscraping-ai:4.0.0
// https://central.sonatype.com/artifact/ai.webscraping/webscraping-ai
import ai.webscraping.Client;
import ai.webscraping.Config;
import ai.webscraping.option.QuestionOptions;

Client client = new Client(Config.builder().apiKey("YOUR_API_KEY").build());
String answer = client.question(QuestionOptions.builder()
    .url("https://trading-forum.com/discussion/market-outlook")
    .question("What is the overall sentiment in this discussion? What stocks are people most bullish/bearish on and why?")
    .build());
System.out.println(answer);
// dotnet add package WebScrapingAI
// https://www.nuget.org/packages/WebScrapingAI
using WebScrapingAI;

var client = new WebScrapingAIClient(new WebScrapingAIClientOptions { ApiKey = "YOUR_API_KEY" });
var answer = await client.QuestionAsync(new QuestionRequest {
    Url = "https://trading-forum.com/discussion/market-outlook",
    Question = "What is the overall sentiment in this discussion? What stocks are people most bullish/bearish on and why?",
});
Console.WriteLine(answer);

Why Use WebScraping.AI for Sentiment

Contextual Understanding: AI that understands financial terminology and context.
Flexible Queries: Ask any question about the content in natural language.
Multi-Source: Single API for news, forums, social media, and more.
Real-Time Data: Get current sentiment as it develops.
Structured Output: Clean data ready for quantitative models.

Sentiment Use Cases

Event-Driven Trading

React to news sentiment in real-time

Risk Management

Monitor sentiment shifts for portfolio holdings

Alpha Generation

Build sentiment factors for quant models

Due Diligence

Assess public perception before investments

Related Use Cases

More financial data solutions

Start Analyzing Market Sentiment

Get started with 1,000 free API credits. No credit card required.

Icon