Dataroma Superinvestor Holdings Scraper avatar

Dataroma Superinvestor Holdings Scraper

Pricing

from $2.00 / 1,000 superinvestor holdings

Go to Apify Store
Dataroma Superinvestor Holdings Scraper

Dataroma Superinvestor Holdings Scraper

Turn Dataroma into a spreadsheet of named-manager 13F holdings. Select Buffett, Burry, Klarman or leave empty for all 80+. Each row is one position with numeric shares, value, % and prices — not money strings. Optional quarter history stays on the same row. $2 per 1,000 holdings.

Pricing

from $2.00 / 1,000 superinvestor holdings

Rating

0.0

(0)

Developer

Muhamed Didovic

Muhamed Didovic

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Categories

Share

Dataroma Scraper logo

Turn Dataroma's superinvestor pages into one typed row per stock holding. Pick Buffett, Burry, Klarman or any of the 80+ managers on the live list — or leave the list empty and take all of them.

Portfolio value, shares, reported price, and current price are numbers (299253558000, not "$299,253,558,000"). Recent activity is split into Buy / Add / Reduce / Sell plus a percent. Optional quarterly history attaches on the same row.

Why Use This Scraper?

  • Pick managers from a Console list (BRK, SAM, BAUPOST, …) instead of guessing raw IDs
  • Empty selection follows Dataroma's live manager list — not a hardcoded "82"
  • Typed money and share fields that sort and filter in CSV / Excel
  • Activity parsed as activityType + activityPercent (Add 45.24%, Reduce 5.89%, Buy)
  • Optional history[] from each holding's hist.php page (still one billed row)
  • Optional ticker filter if you only want AAPL across a set of managers
  • Direct HTTP, 512 MB default — no browser

Overview

Built for analysts, fund researchers, and data teams who already use Dataroma and want the same 13F-derived holdings in a dataset.

One dataset row is one current holding. A Buffett run is ~29 rows (one per stock in the latest filing), not one row per manager. Sector mix is repeated on every row of that portfolio so a spreadsheet filter still works. Quarterly history is an array on the holding when you turn includeHoldingHistory on — it is not extra billed rows.

This is Dataroma's HTML tables, not EDGAR itself. Filing lag matches the site.

Supported Inputs

InputWhat it isExample
Manager IDsMulti-select from the live Dataroma listBRK, SAM, BAUPOST
Empty ID listEvery manager currently on managers.php[] → all ~83
Holdings URLOptional paste of a portfolio pagehttps://www.dataroma.com/m/holdings.php?m=BRK
TickersKeep only those symbolsAAPL, MOH
{
"startUrls": [
"https://www.dataroma.com/m/holdings.php?m=BRK",
"https://www.dataroma.com/m/holdings.php?m=SAM"
]
}

Unsupported: EDGAR / 13F XML, WhaleWisdom, GuruFocus, insider Form 4, Congress trades, login-only Dataroma pages, and historical portfolio snapshots as separate rows (use includeHoldingHistory on each current stock instead).

Use Cases

AudienceUse case
Long-only / family-office researchTrack what named managers added or cut last quarter
Quant / data teamsFeed typed holdings into a warehouse without parsing money strings
JournalistsPull Buffett / Burry / Klarman positions for a story without copying tables
Product & API buildersExpose a holdings feed behind your own app
AgenciesDeliver a client-ready 13F-style extract without writing a scraper

How It Works

How Dataroma Superinvestor Scraper works

  1. Read the live manager list from dataroma.com/m/managers.php (IDs + names).
  2. Fetch each holdings table you selected (holdings.php?m=BRK, …).
  3. Parse one row per stock — ticker, shares, %, prices, activity, sector mix — as numbers.
  4. (Opt-in) Attach quarter history from hist.php for each current holding.
  5. Push to the dataset (JSON / CSV / Excel). Billed per current holding.

Input Configuration

FieldTypeDefaultDescription
superinvestorsarray[]Manager IDs. Empty = every live manager. Case-insensitive (brk → BRK).
startUrlsarray–Optional holdings.php?m= URLs; IDs merge with superinvestors.
symbolsarray–Optional ticker allowlist. Empty = all holdings in the selected portfolios.
includeHoldingHistorybooleanfalseAttach history[] (period, shares, %, activity, reported price). Still one billed row per current holding.
maxItemsinteger10000Cap on holding rows (billing). Free Apify accounts are capped at 100.
maxConcurrencyinteger5Parallel page fetches.
proxyobjectoffDataroma answers a direct request today. Turn Apify Proxy on only if you start seeing blocks.
{
"superinvestors": ["BRK", "SAM"],
"maxItems": 50
}
{
"superinvestors": ["BRK", "psc", "BAUPOST"],
"symbols": ["AAPL", "GOOGL"],
"includeHoldingHistory": true,
"maxItems": 20
}

Output Overview

Each item is one current position at one manager. Identifiers (superinvestorId, symbol, superinvestorUrl) are always present on a successful parse. Money fields are numbers. history is null unless includeHoldingHistory is on.

A manager with zero stocks (empty portfolio on Dataroma) contributes no rows.

Output Samples

Michael Burry / Molina Healthcare, with history enabled (trimmed):

{
"superinvestorId": "SAM",
"superinvestorName": "Michael Burry - Scion Asset Management",
"superinvestorUrl": "https://www.dataroma.com/m/holdings.php?m=SAM",
"period": "2025 Q3",
"periodYear": 2025,
"periodQuarter": 3,
"portfolioDate": "2025-09-30",
"portfolioValue": 55001000,
"numberOfStocks": 3,
"symbol": "MOH",
"stockName": "Molina Healthcare Inc.",
"percentOfPortfolio": 43.49,
"recentActivity": "Buy",
"activityType": "Buy",
"activityPercent": null,
"shares": 125000,
"reportedPrice": 191.36,
"value": 23920000,
"currentPrice": 200.79,
"changeFromReportedPrice": 4.93,
"week52Low": 121.06,
"week52High": 244.89,
"sectorBreakdown": {
"Health Care": 43.49,
"Consumer Goods": 32.35,
"Financials": 24.16
},
"history": [
{
"period": "2025 Q3",
"periodYear": 2025,
"periodQuarter": 3,
"shares": 125000,
"percentOfPortfolio": 43.49,
"recentActivity": "Buy",
"activityType": "Buy",
"activityPercent": null,
"reportedPrice": 191.36
},
{
"period": "2025 Q1",
"periodYear": 2025,
"periodQuarter": 1,
"shares": 0,
"percentOfPortfolio": 0,
"recentActivity": "Sell 100.00%",
"activityType": "Sell",
"activityPercent": 100,
"reportedPrice": null
}
],
"historyUrl": "https://www.dataroma.com/m/hist/hist.php?f=SAM&s=MOH",
"stockUrl": "https://www.dataroma.com/m/stock.php?sym=MOH",
"scrapedAt": "2026-09-19T06:23:39.088Z"
}

Key Output Fields

GroupFields
ManagersuperinvestorId, superinvestorName, superinvestorUrl
Filingperiod, periodYear, periodQuarter, portfolioDate, portfolioValue, numberOfStocks, sectorBreakdown
Positionsymbol, stockName, stockUrl, percentOfPortfolio, shares, value
ActivityrecentActivity, activityType, activityPercent
PricesreportedPrice, currentPrice, changeFromReportedPrice, week52Low, week52High
History (opt-in)history[], historyUrl

FAQ

How do I scrape one manager? Set superinvestors to ["BRK"] (Buffett) or paste https://www.dataroma.com/m/holdings.php?m=BRK in startUrls.

What if I leave Superinvestors empty? The actor reads the current managers.php list (83 names on 2026-09-19) and scrapes all of them. A full run is typically a few thousand holdings.

Are values numbers or strings? Numbers. portfolioValue is 55001000, not "$55,001,000". Compact listing-page figures like $2.05 B become 2050000000.

What does includeHoldingHistory cost? Still one dataroma-holding event per current position. History is nested on that row. It does extra page fetches, so the run is slower.

Is this official SEC data? No. Dataroma republishes public 13F filings. Use EDGAR if you need the raw filing.

Do I need a proxy? Not in current tests. The site returned 200 over a direct request. Use the proxy field if that changes.

Support

Additional Services

Explore More Scrapers

Same author, same export shape: jobs, reviews, and property scrapers on memo23's Apify profile.

🤖 For AI Agents & LLM Apps

Compact reference for AI agents calling this actor via the Apify MCP server or the Apify API (actor: memo23/dataroma-scraper).

Purpose: Scrape current Dataroma superinvestor holdings (one row per stock) with typed numeric fields and optional quarterly history.

Minimal input:

{
"superinvestors": ["SAM"],
"maxItems": 10
}

Output: one dataset row per holding — superinvestorId, superinvestorName, superinvestorUrl, period, periodYear, periodQuarter, portfolioDate, portfolioValue, numberOfStocks, symbol, stockName, stockUrl, percentOfPortfolio, recentActivity, activityType, activityPercent, shares, reportedPrice, value, currentPrice, changeFromReportedPrice, week52Low, week52High, sectorBreakdown, history, historyUrl, scrapedAt.

Behaviors an agent should know:

  • Always set maxItems. Empty superinvestors scrapes every live manager (thousands of rows).
  • IDs are case-insensitive. startUrls holdings.php links merge with superinvestors.
  • symbols is an allowlist; omit it to keep every holding.
  • includeHoldingHistory (default false) adds history[] and extra fetches; billing stays one event per current holding.
  • Free Apify accounts are capped at 100 rows. Billed as PPE event dataroma-holding.
  • Public Dataroma HTML only — not EDGAR XML, not insider Form 4.

⚠️ Disclaimer

This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by Dataroma or any of its subsidiaries. All trademarks mentioned are the property of their respective owners.

The scraper accesses only publicly available superinvestor holdings pages on dataroma.com — no authenticated endpoints, paid features, or content behind a login. Users are responsible for ensuring their use complies with dataroma.com's Terms of Service, applicable data-protection law (GDPR, CCPA, etc.), and any contractual obligations of their own organization.

SEO Keywords

Dataroma scraper, scrape Dataroma, Dataroma API, superinvestor scraper, 13F holdings scraper, Buffett holdings scraper, Michael Burry scraper, Klarman holdings, hedge fund 13F data, superinvestor portfolio export, Dataroma holdings CSV, famous investor stock picks, 13F dataset, fund holdings API, Apify Dataroma