ParseForge Scrapers

MarketBeat Analyst Ratings Scraper

parseforge/marketbeat-ratings-scraper

News & mediaAutomation

Scrapes MarketBeat analyst ratings feeds including upgrades, downgrades, initiations, and reiterated actions. Returns each rating as a flat row with ticker, firm, action, rating, price target, and date.

Run this scraper See the API call
Total users
2
Monthly active
0
Total runs
98
Bookmarked
0
Rating
Not rated yet
Last modified
12 days ago

Overview

ParseForge

MarketBeat Analyst Ratings Scraper

Scrape MarketBeat analyst ratings, upgrades, downgrades, and initiations for any stock, up to a million per run. Every record includes the ticker, analyst firm, rating action, price target, and the date it was issued. Export to CSV, JSON, Excel, or XML.

MarketBeat's analyst ratings pages track every Wall Street upgrade, downgrade, and price target change, but copying that data by hand is slow and error-prone. This Actor reads the public ratings feed directly, filtered by section, and returns each analyst action in a clean, flat row. No browser, no manual exports, and no rate-limit headaches.

Who uses it What they scrape MarketBeat for
Quantitative analysts Build a time series of rating changes to backtest sentiment-based trading strategies.
Retail investors Monitor the latest upgrades and downgrades for a watchlist before the market opens.
Financial journalists Track which stocks are seeing a sudden cluster of analyst initiations or revisions.
Academic researchers Gather a large sample of analyst actions to study herding behavior and forecast accuracy.

What it does

This Actor collects analyst rating actions from MarketBeat's public feed and returns each one as a structured row with the stock ticker, analyst firm, action, rating, and price target.

  • ๐Ÿ“ˆ All ratings: the full firehose of every analyst action published on MarketBeat.
  • โฌ†๏ธ Upgrades only: isolate stocks that received a more bullish rating from a covering firm.
  • โฌ‡๏ธ Downgrades only: catch every stock whose rating was lowered by an analyst.
  • ๐Ÿ”„ Reiterated ratings: track when a firm reaffirms its existing rating and price target on a stock.
  • ๐Ÿ†• Initiated coverage: discover stocks that an analyst firm has started covering for the first time.

Results export to CSV, JSON, Excel, or XML, or straight from the API.

What you can do with MarketBeat data

๐Ÿ“Š Build a sentiment signal.

A quant researcher scrapes the upgrades and downgrades feed daily, joins it to price data, and tests whether a rolling ratio of upgrades to downgrades predicts next-day returns.

๐Ÿ“ฐ Power a morning newsletter.

A financial blogger runs the Actor at 7 AM, grabs the latest initiations and rating changes, and auto-populates a daily email with the top moves before the opening bell.

๐Ÿ” Screen for conviction shifts.

A portfolio manager pulls reiterated ratings and filters for stocks where the price target was raised by more than 20 percent, flagging names where analyst conviction is growing.

๐Ÿ“ˆ Track a single sector.

An energy-sector analyst scrapes all ratings, filters for oil and gas tickers in a downstream script, and plots the consensus rating trend over the last quarter.

Why choose this scraper

What you get
Wall Street consensus See which way the analyst community is leaning on any stock, all in one dataset.
Price target changes Capture every price target revision alongside the rating action and the issuing firm.
No API key needed Reads the public MarketBeat feed directly, so there is no registration or token to manage.
Fixed flat schema Every rating action lands in your dataset with the same columns, ready for a database or spreadsheet.

How it compares

This Actor focuses on the MarketBeat ratings feed sections for bulk collection, while the alternative below targets individual ticker pages and includes consensus summaries.

Feature ParseForge MarketBeat Analyst Ratings & Price Target Scraper
Scrape by ratings feed section Yes Not listed
Scrape by individual stock ticker Not listed Yes
Consensus rating and consensus price target Not listed Yes
Individual analyst rating history Yes Yes
Filter by upgrades, downgrades, or initiations Yes Not listed
Runs without a MarketBeat login or API key Yes Not listed

Configure the run

Drive the Actor by picking a MarketBeat ratings section, and set a ceiling on how many records to collect per run. The Input tab lists every parameter.

A first run with the defaults:

{
 "maxItems": 10
}

A larger pull:

{
 "maxItems": 200
}

Pricing

Pay-per-result: $0.021 per result collected. You pay only for the results written to your dataset.

Results collected Approximate cost
100 results $2.10
1,000 results $21.00
10,000 results $210.00

New Apify accounts start with $5 in free credit.

Free users

Free-plan runs return up to 10 results as a preview. Upgrade your Apify plan to collect up to 1,000,000 results per run.

Run it

  1. Create a free Apify account with $5 in credit.
  2. Open the MarketBeat Analyst Ratings Scraper.
  3. Set your inputs and any filters, then click Start.
  4. Export the results as CSV, Excel, JSON, or XML from the Dataset tab.

Run it programmatically through the Apify API (run-sync-get-dataset-items) or the ApifyClient for JavaScript and Python.

Use with AI agents (MCP)

Give an AI agent live access to MarketBeat through the Model Context Protocol. Add the Actor to Claude, Cursor, or any MCP client:

claude mcp add --transport http apify "https://mcp.apify.com?tools=parseforge/marketbeat-ratings-scraper"

Then prompt it in plain language to run the scraper and read back the results.

Troubleshooting

Why am I getting no results?

Check which section you selected. The 'initiated' and 'reiterated' sections have fewer daily actions than the main 'ratings' feed. Try switching to 'ratings' and increasing the max items value.

The run finished but the dataset has fewer rows than my max items setting.

The Actor stops when it runs out of available ratings on the site. If MarketBeat has published fewer actions than your max items limit, the dataset will contain everything that was available at that moment.

Some rows are missing the price target field.

Not every analyst action includes a price target. Initiations and some reiterations may publish a rating without an accompanying target. This is normal and reflects the source data.

The Actor is timing out on large runs.

Try lowering the max items value and scheduling multiple runs. You can also increase the Actor's timeout in the run settings if you need to collect a very large historical dataset.

I need historical ratings from last month, not today's.

The MarketBeat feed pages back in time. The Actor will paginate through older ratings as long as they are available on the site, up to your max items limit.

FAQ

Question Answer
What MarketBeat sections can I scrape? You can scrape the main ratings feed, or filter to only upgrades, downgrades, reiterated ratings, or newly initiated coverage. Pick the section in the input settings.
Does this Actor require a MarketBeat login or API key? No. It reads the public ratings pages that MarketBeat serves to any browser, so there is no account, API key, or OAuth flow needed.
How many ratings can I collect in one run? You set the maximum in the input. The Actor can collect up to one million rating actions per run, limited only by what is available on the site.
What data fields does each rating row include? Each row includes the stock ticker, the analyst firm name, the rating action, the rating itself, the price target, and the date the action was published.
Can I scrape ratings for a specific stock ticker? The Actor scrapes the MarketBeat ratings feed sections, which cover all tickers. To isolate a single stock, filter the output dataset by the ticker column after the run completes.
How often is the MarketBeat ratings feed updated? MarketBeat publishes new analyst actions throughout the trading day. You can schedule this Actor to run hourly or daily on the Apify platform to capture every new rating.
What export formats are supported? Your dataset can be exported to CSV, JSON, Excel, XML, or pushed directly to a webhook or cloud storage integration.
Does this Actor get the consensus rating and consensus price target? This Actor collects the individual analyst actions that make up the consensus. The consensus itself is a computed aggregate that you can derive from the full dataset of individual ratings.
Can I get the analyst's name along with the firm? The Actor captures the data as published in the MarketBeat feed. If the feed includes the individual analyst name alongside the firm, it will appear in your output row.
Is this Actor faster than scraping MarketBeat with a browser? Yes. It runs headlessly on the Apify platform and reads the underlying data feed directly, so it avoids the overhead of rendering a full browser for every page.

Related actors

Browse the full ParseForge collection for more scrapers.

๐Ÿ†˜ Need help? Email parseforge@protonmail.com with your run ID, your input, and what you expected.

โš ๏ธ Disclaimer. This Actor is unofficial and is not affiliated with, endorsed by, or sponsored by MarketBeat Media, LLC. It collects only publicly available data. You are responsible for using the collected data in compliance with the source's terms of service and applicable data-protection laws, including GDPR, CCPA, and PIPL. Do not use it to collect personal data unlawfully.

Input

FieldTypeWhat it doesDefault
category string (5 options) MarketBeat ratings section to scrape. ratings
maxItems integer How many ratings to collect per run. 10

Pricing

from $19.00 per 1,000 results

Charged forWhat it isPrice each
result Single result in the default dataset. $0.019 to $0.021

Tiered: the lower figure is the price on a higher Apify plan. Billing and the free credit live on Apify.

API

One POST returns the dataset directly. Same shape for every scraper in the library, so swapping the slug is the only change.

POST ยท run and get results
curl -X POST "https://api.apify.com/v2/acts/parseforge~marketbeat-ratings-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "helloWorld": 123
  }'

Examples

Input that runs as-is.

input.json
{
  "helloWorld": 123
}

Reviews

No reviews yet. Be the first.

Issues

We build and maintain this scraper, so a problem with it comes to us. Report it on the Apify listing and the thread stays attached to the scraper where the next person can find it: open an issue.

Broken and urgent, or you would rather not post in public? Write to parseforge@protonmail.com and it reaches the people who wrote it.

Related scrapers

Run MarketBeat Analyst Ratings Scraper on Apify All scrapers