Alternative data is information about a company, sector or economy that doesn't come from the company's own reports or from traditional market data feeds. Investors use alternative data such as web prices, job postings, product reviews, social sentiment, app and web traffic, and public disclosures to see what is happening before it shows up in earnings.
Much of it is collected from public websites. This guide covers the main types of alternative data, where each comes from on the web, how funds turn raw pages into signals, and how to collect it yourself with Scrape.ly. On 26 October 2026 we pulled the newest stock trades disclosed by members of Congress and live quotes for the tickers involved, then joined them in Python. You'll see both runs, the code, the cost, and the compliance rules that decide what you can do with the data.
Alternative data vs traditional data
Traditional data is what companies and exchanges publish about themselves: financial statements, earnings calls, guidance, press releases, prices and volumes. Wikipedia's definition puts the difference simply: alternative data sets are "information about a particular company that is published by sources outside of the company".
| Traditional data | Alternative data | |
|---|---|---|
| Who publishes it | The company, exchanges, regulators on a schedule | Customers, employees, retailers, platforms, governments |
| Frequency | Quarterly or annual | Daily, hourly, sometimes real time |
| Examples | 10-K, earnings call, price history | Product prices, job posts, reviews, web traffic, social posts |
| Structure | Standardised | Messy; needs cleaning, mapping to tickers, history |
| Edge | Everyone has it at the same moment | Can lead reported numbers, if you collect it early and well |
The edge is timing. A retailer's quarterly revenue is a lagging number; the prices on its website, the jobs it's hiring for and what customers write about it this week are leading ones.
Types of alternative data you can collect from the web
The FISD Alternative Data Council's guide lists web-scraped data, sentiment, credit card and point-of-sale data, search trends and crowd-sourced data among the most popular types. Card and point-of-sale panels come from data partnerships, not websites. The others can be collected from public pages, and most have a ready-made Actor in the Scrape.ly Store:
| Type | What it can tell you | Public web source | Store Actor | List price |
|---|---|---|---|---|
| Prices and discounts | Pricing power, promotions, inflation by category | Retailer pages, Amazon price history | Keepa Scraper | $5.31 per 1,000 products |
| Hiring | Expansion, new products, cost cutting | Job boards | LinkedIn Jobs Scraper | $1.81 per 1,000 jobs |
| Employee sentiment | Morale, churn risk | Employer reviews | Glassdoor Reviews Scraper | $3.02 per 1,000 reviews |
| Customer sentiment | Product problems, brand momentum | Review sites | Trustpilot Reviews Scraper | $0.70 per 1,000 reviews + $0.02 per run |
| Investor sentiment | Retail positioning on a ticker | StockTwits messages with Bullish/Bearish tags | StockTwits Scraper | $2.04 per 1,000 messages |
| Web traffic | Demand for a company's site | Similarweb estimates | Similarweb Scraper | $1.50 per 1,000 sites + platform usage |
| Search interest | Consumer attention to a brand or product | Google Trends | Google Trends Scraper | $2.00 per 1,000 results + platform usage |
| Insider and fund filings | Form 4 insider trades, 13F holdings, 8-K events | SEC EDGAR | SEC EDGAR Scraper | $0.42 per 1,000 filings |
| Politicians' trades | What members of Congress buy and sell | House and Senate disclosure reports | Congress Stock Trades Scraper | $1.87 per 1,000 trades |
| Market context | Price, valuation, analyst targets, news | Yahoo Finance | Yahoo Finance Scraper | $0.54 per 1,000 tickers |
Prices are list prices checked on 26 October 2026, platform usage included unless the row says otherwise. Our guides to price scraping, job scraping and Twitter sentiment analysis go deeper on three of these types.
How funds turn web data into signals
Collecting pages is the easy half. The work that makes alternative data usable:
- Map every row to an entity. A job post names "Meta", a review names a store, a product page names a brand. Map each to a ticker, and keep the mapping versioned, because brands get sold and renamed.
- Store it point in time. Save when you collected each row (many Store Actors add a timestamp such as
scrapedAt, and every run records when it started) and never overwrite history. A backtest that uses today's version of last year's data is lying to you. - Collect on a fixed schedule. A signal like "job posts up 20% month on month" only means something if you collected the same way every month.
- Build history before you need it. Most web data can't be backfilled: yesterday's prices and reviews are gone once they change. Disclosures are the exception: the Congress trades Actor reads House reports from 2008 and Senate reports from 2012.
- Validate against reported numbers. Check whether your signal would have predicted past results before you trade on it.
A real run: the newest congressional stock trades
The STOCK Act requires members of Congress to disclose stock trades in Periodic Transaction Reports, published by the Clerk of the House and the Secretary of the Senate. The Congress Stock Trades Scraper reads both live and returns one row per transaction. We started from the Store preset Latest trades by Congress members, lowered the limit to 5 and turned off the free rows for scanned paper reports:
{
"maxResults": 5,
"chamber": "both",
"includeScannedReports": false,
"includeMemberDetails": true
}It saved 5 transactions from 2 reports in 15 seconds:
| Member | Party, state | Asset | Type | Traded | Disclosed | Days to disclose | Amount |
|---|---|---|---|---|---|---|---|
| Darrell Issa | Republican, CA | US Treasury Note 3.375% due 09/15/28 | Purchase | 2026-10-08 | 2026-10-22 | 14 | $5,000,001 - $25,000,000 |
| Darrell Issa | Republican, CA | US Treasury Note 3.375% due 09/15/28 | Sale | 2026-10-14 | 2026-10-22 | 8 | $5,000,001 - $25,000,000 |
| Cleo Fields | Democrat, LA | NVIDIA Corporation (NVDA) | Purchase | 2026-10-01 | 2026-10-22 | 21 | $1,001 - $15,000 |
| Cleo Fields | Democrat, LA | NVIDIA Corporation (NVDA) | Purchase | 2026-10-01 | 2026-10-22 | 21 | $1,001 - $15,000 |
| Cleo Fields | Democrat, LA | NVIDIA Corporation (NVDA) | Purchase | 2026-10-01 | 2026-10-22 | 21 | $1,001 - $15,000 |
Three details show what alternative data work looks like in practice:
- The three NVDA rows are not duplicates. Each has its own line number in the report and a different account (two brokerage accounts and an IRA). Deduplicate on report ID and line number, never on the visible fields.
- Amounts are ranges, not numbers. Disclosures give bands. The Actor adds
amountMinandamountMax, so the three NVDA purchases sum to $3,003 to $45,000. - The lag is the signal's weak spot. These trades became public 8 to 21 days after they happened (
daysToDisclose). Whatever you build on them reacts weeks late, which is why journalists use them as much as traders do.
Join it with market data
A trade means more next to the stock it's in. We ran the Yahoo Finance Scraper for three tickers with only the blocks we needed (profile, price, statistics, analyst recommendations and three news headlines each). It saved 3 tickers in 4 seconds:
| Ticker | Price (14:26 UTC) | Change | Market cap | Analyst mean target | Consensus |
|---|---|---|---|---|---|
| NVDA | $214.92 | +1.88% | $5.19 trillion | $328.95 | strong buy |
| MSFT | $526.88 | +0.45% | $3.91 trillion | $601.73 | strong buy |
| AAPL | $345.39 | -0.67% | $5.04 trillion | $329.25 | buy |
This Python script (pip install scrapely-client-python) runs both Actors, groups the trades by member, ticker and date, and adds the quote:
import os
from collections import defaultdict
from scrapely_client import ScrapelyClient
client = ScrapelyClient(os.environ["SCRAPELY_TOKEN"], api_url="https://api.scrape.ly")
def items(actor, run_input):
run = client.actor(actor).call(run_input=run_input)
return list(client.dataset(run.default_dataset_id).iterate_items())
trades = items("querystone/congress-trades-scraper",
{"maxResults": 5, "chamber": "both", "includeScannedReports": False})
tickers = sorted({t["ticker"] for t in trades if t.get("ticker")})
quotes_raw = items("querystone/yahoo-finance-scraper",
{"tickers": tickers, "dataSections": ["profile", "price", "statistics"]})
def summarize(trades, quotes_raw):
quotes = {q["ticker"]: q for q in quotes_raw}
groups = defaultdict(lambda: {"n": 0, "min": 0, "max": 0})
for t in trades:
if not t.get("ticker"):
continue
g = groups[(t["memberName"], t["ticker"], t["transactionType"], t["transactionDate"], t["disclosureDate"])]
g["n"] += 1
g["min"] += t["amountMin"]
g["max"] += t["amountMax"]
for (member, ticker, kind, traded, disclosed), g in groups.items():
q = quotes.get(ticker) or {}
target = (q.get("stock_info") or {}).get("target_mean_price")
yield {
"member": member, "ticker": ticker, "type": kind, "traded": traded, "disclosed": disclosed,
"transactions": g["n"], "amount": f'${g["min"]:,} - ${g["max"]:,}',
"price_now": q.get("current_price"), "analyst_target": round(target, 2) if target else None,
}
for row in summarize(trades, quotes_raw):
print(row)Run on the two datasets above, summarize printed one line (the Treasury notes have no ticker, so they drop out):
{'member': 'Cleo Fields', 'ticker': 'NVDA', 'type': 'Purchase', 'traded': '2026-10-01', 'disclosed': '2026-10-22', 'transactions': 3, 'amount': '$3,003 - $45,000', 'price_now': 214.92, 'analyst_target': 328.95}Schedule it and it becomes a monitor: the Actor's README suggests a daily run with Disclosed from set to 1 day, pushing new trades to Slack, a sheet or your database. In Scrape.ly's Automations, that's a daily schedule, the Congress trades Actor with "filedFrom": "1 day", and a delivery to Slack, Google Sheets or a webhook. AI agents can run the same lookup over the hosted MCP server: "Use scrapely to get this week's congressional NVDA trades and today's NVDA price."
Alternative data providers vs collecting it yourself
Alternative data providers sell finished datasets: cleaned, mapped to tickers, with years of history. That history is the main reason to buy, since you can't go back and scrape last year's prices. Collecting it yourself wins on the other dimensions:
- Coverage you choose. Your watchlist, your competitors, your categories, not a vendor's universe.
- Freshness you control. Run hourly, daily or weekly; a dataset you collect yourself is never older than your last run.
- Transparency. You know exactly how every row was collected, which is what compliance teams ask about first (see the App Annie case below).
- Cost. Store Actors charge per row: tracking 2,000 SKUs' price history daily on Keepa is 2,000 × $0.00531 = $10.62 a day.
Many funds do both: buy history for the backtest, then collect the live feed themselves.
Compliance: what matters with alternative data
This is general information, not legal advice. Talk to your compliance team and counsel before alternative data goes into investment decisions.
- Material non-public information. Insider trading, as the SEC's investor site defines it, is trading "in breach of a fiduciary duty or other relationship of trust and confidence, on the basis of material, nonpublic information". Data shown to any visitor of a public page is the opposite of confidential, which is why diligence focuses on how data was obtained. Scrape.ly Store Actors collect only publicly available data that any visitor can see, without logging in.
- How the data was made. In 2021 the SEC brought its first enforcement action against an alternative data provider, App Annie, which agreed to pay a $10 million penalty. The SEC found it had used confidential app data from companies, contrary to its promise to aggregate and anonymise it, to make the estimates it sold to trading firms more valuable. Know your data's provenance and be able to show it.
- Restrictions on specific sources. Federal law makes it unlawful to obtain or use congressional financial disclosure reports "for any commercial purpose, other than by news and communications media for dissemination to the general public" (5 U.S.C. § 13107). The Congress trades Actor's README flags the Senate site's terms on this too. Check this with counsel before congressional trades feed a commercial product or a fund's trading.
- Website terms. Many sites restrict automated access in their terms. How they apply depends on your jurisdiction and use; our guide to whether web scraping is legal covers the main cases.
- Personal data. Reviews, job posts and social posts contain names and opinions of private people. Aggregate to the company level, drop identifiers you don't need, and follow the GDPR and CCPA.
What it costs
You pay per row, at the list prices in the table above. Our two runs:
- Congress trades: 5 × $0.00187 = $0.0094 at list price.
- Yahoo Finance: 3 × $0.000537 = $0.0016 at list price.
The account was billed $0.0075 and $0.0013 because its plan has a Store discount. A realistic monitor, daily congressional trades (say 50 a day) plus quotes for a 500-ticker watchlist, comes to 50 × $0.00187 + 500 × $0.000537 = $0.36 a day, about $10.86 for 30 days. The Free plan's $5 of monthly credit is enough to build and test the pipeline.
Why Scrape.ly for alternative data
- One platform, many sources. Prices, jobs, reviews, sentiment, traffic, trends, SEC filings and congressional trades are each one Actor away, with the same API, client and billing.
- Point-in-time by default. Every run is stored with its date and dataset, and schedules collect the same way every time.
- Fixed per-row prices with a maximum charge per run, so a backfill never turns into a surprise bill.
- Built for pipelines and agents. Schedules, webhooks, Google Sheets, S3/R2, Python and Node.js clients, and MCP for research agents. For a deeper look at one source, see our guide to scraping Yahoo Finance.
FAQ
What is alternative data in simple terms?
Information about a company that the company didn't publish itself: the prices on its website, the jobs it posts, what customers and employees write about it, how many people visit its site. Investors use it to estimate results before they're reported.
What are examples of alternative data?
Web prices, job postings, product and employer reviews, social media sentiment, web traffic estimates, search trends, satellite images, credit card panels, app downloads, insider filings and politicians' stock trades. Most of the web-based ones can be collected with Store Actors.
Is alternative data legal to use?
Using public data is common and generally lawful, but it depends on how it was collected and what it contains. Avoid material non-public information, respect site terms and privacy law, check source-specific rules such as the commercial-use restriction on congressional disclosure reports, and document provenance. This isn't legal advice.
Who uses alternative data?
Quantitative hedge funds adopted it first, and the FISD guide describes fundamental and hybrid asset managers following them. Corporate strategy teams, consultants and journalists use the same public sources, and individual investors use the accessible ones, such as Google Trends, StockTwits sentiment and congressional trades.
Where can I get congressional stock trading data?
From the official Periodic Transaction Reports on the House Clerk and Senate disclosure sites, or as structured rows with the Congress Stock Trades Scraper, which reads both chambers live and adds party, state, amount bounds and days to disclose.



