Bloomberg Scraper
Under maintenancePricing
$20.00 / 1,000 results
Bloomberg Scraper
Under maintenanceExtract real-time quotes, historical OHLCV, financial statements, and news directly from Bloomberg. No Terminal required, fully structured for AI & Quant.
Pricing
$20.00 / 1,000 results
Rating
0.0
(0)
Developer
RD.Galih Rakasiwi
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Share
Bloomberg Financial Data API
Institutional-Grade Bloomberg Financial Data — No Terminal Required
TL;DR — Start this Actor, wait ~60 seconds for the container to boot, and you get a full REST API serving Bloomberg-quality financial data. Real-time quotes, historical OHLCV, financial statements, Bloomberg News with sentiment, FIGI identifier mapping, and built-in LLM prompt templates. Free tier works with zero API keys — just hit Start.
Table of Contents
- What You Get
- How It Works
- How We Handle Stability & Anti-Bot
- Feature Matrix
- Start the Actor
- Input Configuration
- Output — What You'll See After Start
- Enriched Response Samples
- Integration Snippets
- Saved Task Examples
- Disclaimer
What You Get
When you press Start, the Actor boots a FastAPI server inside an Apify container. You get a live REST API with:
| Capability | Description |
|---|---|
| Swagger UI | Interactive API docs — click "Try it out" right from your browser |
| OpenAPI 3.0 Spec | Machine-readable spec — generate typed clients in any language |
| 57 REST Endpoints | Quotes, financials, news, identifiers, market data, LLM prompts |
| Auto Anti-Bot | PerimeterX bypass handled automatically — no manual cookie management |
| 3-Tier Fallback | Bloomberg REST → Bloomberg Web → OpenFIGI — always returns data |
| LLM-Ready Output | Structured JSON + 7 built-in prompt templates for AI financial agents |
| Zero-Config Start | No API keys required — OpenFIGI + public web data work out of the box |
How It Works
┌───────────────────────────────────────────────────┐│ APIFY RUN ││ ││ Start Actor ──▶ Container Boots (~60s) ││ │ ││ ▼ ││ ┌─────────────────────────────────────────────┐ ││ │ FASTAPI SERVER (:8000) │ ││ │ │ ││ │ /api/v1/price/quote/AAPL │ ││ │ /api/v1/financials/MSFT/all │ ││ │ /api/v1/news/latest │ ││ │ /api/v1/identifier/resolve/TSLA │ ││ │ /api/v1/prompts/investment-report?ticker=AAPL│ ││ │ /api/v1/market/snapshot │ ││ │ ...57 endpoints total │ ││ │ │ ││ │ Behind the scenes: │ ││ │ ┌──────────────────────────────────┐ │ ││ │ │ Bloomberg REST ──▶ Bloomberg Web│ │ ││ │ │ │ │ │ │ ││ │ │ ▼ ▼ │ │ ││ │ │ (paid sub) (auto-auth │ │ ││ │ │ browser) │ │ ││ │ │ │ │ │ ││ │ │ ▼ │ │ ││ │ │ ┌──────────┐ │ │ ││ │ │ │ OpenFIGI │◀─┤ │ ││ │ │ │ (always │ │ │ ││ │ │ │ free) │ │ │ ││ │ │ └──────────┘ │ │ ││ │ └──────────────────────────────────┘ │ ││ └─────────────────────────────────────────────┘ ││ ││ ▲ Your code calls this Actor's URL ││ https://YOUR-RUN.apify.actor/api/v1/... │└───────────────────────────────────────────────────┘
No polling. No file downloads. No webhook parsing. You call a REST endpoint, you get JSON back — just like any production API. The run stays alive and serves requests until you stop it.
How We Handle Stability & Anti-Bot
Bloomberg deploys PerimeterX (PX), a sophisticated anti-bot system that fingerprint-binds session tokens to the exact browser that solved its JavaScript challenge. Extracting cookies and replaying them through httpx or curl will always fail — the TLS/JA3 fingerprint, header order, and canvas hash no longer match.
Our Approach: Persistent Browser as API Proxy
The Actor launches a headless Chromium browser at startup and keeps it alive for the entire run. All data requests flow through page.evaluate() → fetch() — the request originates from the same browser that holds the valid PX session. The fingerprint is consistent. PerimeterX sees a normal browser.
Resilience Stack — 6 Layers of Defense
| # | Layer | Mechanism | What It Prevents |
|---|---|---|---|
| 1 | Auto-Auth | Login + PX challenge solved at container boot; session refreshed every 10 minutes | Manual cookie management; session expiration |
| 2 | Stealth Profile | Persistent browser context — spoofs navigator.webdriver, navigator.plugins, window.chrome, canvas fingerprint | PerimeterX detection on every request |
| 3 | Token-Bucket Rate Limiter | Configurable burst: 20–200 req/min per data source | 429 throttling; IP bans |
| 4 | Exponential Backoff + Jitter | Tenacity — 1s → 30s retry, 3 attempts | Transient network failures |
| 5 | Circuit Breaker | 5 consecutive failures → 60s open with automatic half-open probe | Cascading failure; resource exhaustion |
| 6 | Graceful Degradation | REST → Web → OpenFIGI priority chain. Returns partial data with source metadata | Total data loss — the API never fully fails |
Self-Healing Flow
Container Boot ──▶ auto-auth() ──▶ success? ──yes──▶ Serving Requests│no (rare in headless)│Request → 403 blocked? → recover_session() → success? ──yes──▶ continue│no → fallback to OpenFIGI↳ API stays up
Every 10 minutes the session is proactively refreshed. If a request returns 403 mid-run, recovery is attempted automatically before falling back. You never touch browser sessions or cookies.
Feature Matrix
Search
| # | Action | Endpoint | Auth |
|---|---|---|---|
GET | Find Instruments | /api/v1/search/instruments?query=Apple&exch_code=US | None |
GET | Find Companies | /api/v1/search/company?query=Microsoft&limit=10 | None |
GET | Find News | /api/v1/search/news?ticker=AAPL&categories=Markets,Earnings | Web |
Price — Real-Time & Historical
| # | Action | Endpoint | Auth |
|---|---|---|---|
GET | Single Quote | /api/v1/price/quote/AAPL | Web |
POST | Batch Quotes (≤50) | /api/v1/price/quotes?tickers=AAPL,MSFT,GOOGL | Web |
GET | Historical OHLCV | /api/v1/price/historical/AAPL?period=2y&interval=1d | REST/Web |
GET | Intraday Candles | /api/v1/price/intraday/SPY?interval=5&hours_back=8 | Web |
Company
| # | Action | Endpoint | Auth |
|---|---|---|---|
GET | Profile | /api/v1/company/AAPL/profile | Web |
GET | Full + Key Metrics | /api/v1/company/MSFT/full | Web |
GET | Peer Group | /api/v1/company/TSLA/peers | Web |
POST | Side-by-Side Compare | /api/v1/company/compare?tickers=AAPL,MSFT,GOOGL | Web |
Market
| # | Action | Endpoint | Auth |
|---|---|---|---|
GET | Full Market Snapshot | /api/v1/market/snapshot | Web |
GET | Index Detail | /api/v1/market/index/SPX | Web |
GET | Top Movers | /api/v1/market/movers?category=gainers&limit=10 | Web |
GET | Sector Performance | /api/v1/market/sectors | Web |
Financial Statements
| # | Action | Endpoint | Auth |
|---|---|---|---|
GET | Income Statement | /api/v1/financials/AAPL/income?period=quarterly | REST/Web |
GET | Balance Sheet | /api/v1/financials/MSFT/balance?period=annual | REST/Web |
GET | Cash Flow | /api/v1/financials/TSLA/cashflow?period=ttm | REST/Web |
GET | All Three Statements | /api/v1/financials/JPM/all?period=annual | REST/Web |
News & Sentiment
| # | Action | Endpoint | Auth |
|---|---|---|---|
GET | Latest Headlines | /api/v1/news/latest?page_size=20 | Web |
GET | Full Article Body | /api/v1/news/article?article_url=... | Web |
GET | News by Ticker | /api/v1/news/ticker/AAPL | Web |
GET | News by Category | /api/v1/news/category/Earnings | Web |
Identifiers (OpenFIGI — Always Free)
| # | Action | Endpoint | Auth |
|---|---|---|---|
GET | Resolve Ticker → Full Details | /api/v1/identifier/resolve/AAPL | None |
GET | Map Any ID → FIGI | /api/v1/identifier/map?id_type=ISIN&id_value=US0378331005 | None |
GET | Ticker → FIGI | /api/v1/identifier/figi/AAPL | None |
LLM Prompt Templates
| # | Template | Endpoint |
|---|---|---|
GET | Equity Research Summary | /api/v1/prompts/summarize-company?ticker=AAPL |
GET | Multi-Company Comparison | /api/v1/prompts/compare-companies?tickers=AAPL,MSFT,GOOGL |
GET | Market Strategy Brief | /api/v1/prompts/analyze-market-trend |
GET | Full Investment Report | /api/v1/prompts/investment-report?ticker=TSLA |
GET | Daily News Roundup | /api/v1/prompts/daily-news-summary |
GET | Price Movement Analysis | /api/v1/prompts/price-movement?ticker=NVDA |
GET | Risk Profile Assessment | /api/v1/prompts/risk-analysis?ticker=JPM |
Each prompt endpoint returns a structured prompt + list of suggested follow-up API calls. Feed directly into GPT-4, Claude, or any LLM.
Start the Actor
Option 1 — Zero Config (Free Tier)
- Click Start on this Actor's page
- Wait ~60 seconds for the container to boot
- Open the Swagger UI link from the Output tab
- Start calling endpoints — OpenFIGI identifiers and public web data work with no API keys
Option 2 — With Bloomberg Web Access (Recommended)
Same as above. The browser auto-authenticates to Bloomberg's public web tier — no credentials needed. You get real-time quotes, company profiles, market snapshots, and news.
Option 3 — With Bloomberg REST Subscription
Fill in the optional input fields with your Bloomberg API credentials to unlock full reference data, historical financials, and higher rate limits:
{"bloombergClientId": "YOUR_BBG_CLIENT_ID","bloombergClientSecret": "YOUR_BBG_CLIENT_SECRET","openfigiApiKey": "YOUR_OPENFIGI_KEY"}
Input Configuration
All fields are optional — the Actor works with zero configuration. The free data tier is always available.
| Field | Type | Default | Description |
|---|---|---|---|
openfigiApiKey | string | (empty) | OpenFIGI API key for higher rate limits. Free — register at openfigi.com |
bloombergClientId | string | (empty) | Bloomberg REST API client ID — requires Bloomberg subscription |
bloombergClientSecret | string | (empty) | Bloomberg REST API client secret |
bloombergJwtSecret | string | (empty) | Bloomberg JWT signing secret for API authentication |
redisUrl | string | redis://localhost:6379/0 | Redis connection URL for response caching |
guiMode | boolean | false | Run browser with visible UI — improves PerimeterX pass rate on GPU-enabled plans |
logLevel | select | INFO | Logging verbosity — DEBUG, INFO, WARNING, ERROR |
port | integer | 8000 | Internal API server port |
Input JSON preview (as configured in Apify Console):
{"openfigiApiKey": "","bloombergClientId": "","bloombergClientSecret": "","bloombergJwtSecret": "","redisUrl": "redis://localhost:6379/0","guiMode": false,"logLevel": "INFO","port": 8000}
Output — What You'll See After Start
Once the container is running, the Output tab in Apify Console shows these live links:
| Link | What It Is |
|---|---|
| Swagger UI | Interactive API documentation — browse all endpoints and test calls directly |
| OpenAPI Spec | Machine-readable openapi.json — generate SDKs with OpenAPI Generator |
| ReDoc | Clean, readable alternative API docs |
| Health Check | Verify the server is alive — {"status":"ok","version":"2.0.0"} |
Use the container URL as your API base — every run gets its own subdomain:
https://YOUR-RUN-ID.apify.actor/api/v1/...
Enriched Response Samples
Every response follows a consistent envelope:
GET /api/v1/price/quote/AAPL
{"status": "success","quote": {"ticker": "AAPL","price": 228.17,"change": 2.83,"change_pct": 1.26,"bid": 228.15,"ask": 228.20,"open": 226.00,"previous_close": 225.34,"day_high": 229.10,"day_low": 225.80,"volume": 48320000,"avg_volume_10d": 52000000,"market_cap": 3480000000000,"fifty_two_week_high": 260.10,"fifty_two_week_low": 164.08,"timestamp": "2026-08-09T14:30:00Z","is_delayed": true,"delay_minutes": 15,"exchange": "NASDAQ","currency": "USD"}}
GET /api/v1/financials/AAPL/income?period=annual
{"status": "success","ticker": "AAPL","period": "annual","income_statements": [{"ticker": "AAPL","period": "annual","fiscal_year": 2025,"period_end_date": "2025-09-30","currency": "USD","revenue": 394328000000,"cost_of_revenue": 220000000000,"gross_profit": 174328000000,"operating_income": 120328000000,"net_income": 98528000000,"eps_basic": 6.45,"eps_diluted": 6.38,"ebitda": 134000000000,"gross_margin": 0.442,"operating_margin": 0.305,"net_margin": 0.250,"shares_basic": 15270000000,"shares_diluted": 15450000000}]}
GET /api/v1/market/snapshot
{"status": "success","snapshot": {"timestamp": "2026-08-09T14:30:00Z","indices": [{ "ticker": "SPX", "name": "S&P 500", "last_price": 5983.45, "price_change_pct": 0.74 },{ "ticker": "NDX", "name": "Nasdaq 100", "last_price": 21056.32, "price_change_pct": 0.91 },{ "ticker": "DJI", "name": "Dow Jones", "last_price": 42310.18, "price_change_pct": 0.32 }],"sector_performance": [{ "sector": "Technology", "change_pct": 1.5 },{ "sector": "Financials", "change_pct": -0.3 }],"treasury_yields": { "2Y": 3.98, "10Y": 4.15 },"vix": 14.8}}
Error Envelope (All Endpoints)
{"status": "error","ticker": "INVALID$$","message": "Unable to resolve ticker symbol"}
Integration Snippets
Replace YOUR-RUN-ID with the run ID from Apify Console, or use the container URL from the Output tab.
Python — Portfolio Price Check
import asyncioimport httpxBASE = "https://YOUR-RUN-ID.apify.actor/api/v1"async def check_portfolio():async with httpx.AsyncClient(timeout=30) as client:resp = await client.post(f"{BASE}/price/quotes", params={"tickers": "AAPL,MSFT,GOOGL,AMZN,NVDA,META,TSLA"})data = resp.json()for q in data["quotes"]:print(f"{q['ticker']}: ${q['price']:.2f} ({q['change_pct']:+.2f}%)")
Python — Pipe Market Data to an LLM
import asyncioimport httpxBASE = "https://YOUR-RUN-ID.apify.actor/api/v1"async def market_briefing_for_llm():async with httpx.AsyncClient(timeout=30) as client:snapshot, prompt = await asyncio.gather(client.get(f"{BASE}/market/snapshot"),client.get(f"{BASE}/prompts/analyze-market-trend"),)return {"data": snapshot.json()["snapshot"],"system_prompt": prompt.json()["prompt"],# Send both to your LLM of choice}
Python — Full Equity Research Pipeline
import asyncioimport httpxBASE = "https://YOUR-RUN-ID.apify.actor/api/v1"async def equity_deep_dive(ticker: str):async with httpx.AsyncClient(timeout=30) as client:profile, company, peers, financials, news, prompt = await asyncio.gather(client.get(f"{BASE}/company/{ticker}/profile"),client.get(f"{BASE}/company/{ticker}/full"),client.get(f"{BASE}/company/{ticker}/peers"),client.get(f"{BASE}/financials/{ticker}/all", params={"period": "annual"}),client.get(f"{BASE}/news/ticker/{ticker}", params={"page_size": 5}),client.get(f"{BASE}/prompts/investment-report", params={"ticker": ticker}),)return {"profile": profile.json()["profile"],"metrics": company.json()["data"],"peers": peers.json()["data"],"financials": financials.json(),"recent_news": news.json()["articles"],"llm_prompt": prompt.json()["prompt"],}
cURL — Quick Start
# Health checkcurl -s https://YOUR-RUN-ID.apify.actor/health | jq# Single quotecurl -s "https://YOUR-RUN-ID.apify.actor/api/v1/price/quote/AAPL" | jq# Batch quotescurl -s -X POST \"https://YOUR-RUN-ID.apify.actor/api/v1/price/quotes?tickers=AAPL,MSFT,NVDA" | jq# Historical OHLCV (2 years, weekly bars)curl -s "https://YOUR-RUN-ID.apify.actor/api/v1/price/historical/AAPL?period=2y&interval=1wk" \| jq '.bars[:4]'# Full financial statementscurl -s "https://YOUR-RUN-ID.apify.actor/api/v1/financials/MSFT/all?period=annual" | jq
Saved Task Examples
Pre-configured Actor inputs you can save in Apify Console for one-click reuse.
Task 1 — "Free Tier Quick Start"
Zero API keys. Uses only OpenFIGI identifier mapping and public web data. Ideal for first-time evaluation.
{"openfigiApiKey": "","logLevel": "INFO","port": 8000}
Use for: FIGI mapping, basic instrument search, evaluating the Actor before committing credentials.
Task 2 — "Bloomberg Web Access — Full Data"
No subscription needed. Enables real-time quotes, financial statements, market snapshots, and news through browser-based web access. guiMode: true significantly improves PerimeterX pass rate.
{"openfigiApiKey": "YOUR_FREE_OPENFIGI_KEY","guiMode": true,"logLevel": "INFO","port": 8000}
Use for: Daily market briefings, portfolio tracking, equity research, news aggregation.
Task 3 — "Institutional — Bloomberg REST + Cache"
Full Bloomberg REST API with Redis caching for production workloads. Unlocks maximum rate limits and complete reference data.
{"openfigiApiKey": "YOUR_OPENFIGI_KEY","bloombergClientId": "YOUR_BBG_CLIENT_ID","bloombergClientSecret": "YOUR_BBG_CLIENT_SECRET","bloombergJwtSecret": "YOUR_BBG_JWT_SECRET","redisUrl": "redis://your-redis-host:6379/0","guiMode": true,"logLevel": "DEBUG","port": 8000}
Use for: High-frequency data pipelines, production trading support systems, institutional research automation.
Disclaimer
This Actor does not redistribute Bloomberg L.P. proprietary data. All data is fetched in real-time from publicly accessible endpoints and the OpenFIGI API (a Bloomberg-owned open standard). Users with Bloomberg subscriptions may configure their own API credentials for access to licensed data.
- Bloomberg®, Bloomberg Terminal®, and BLOOMBERG PROFESSIONAL® are trademarks and service marks of Bloomberg Finance L.P.
- FIGI® and OpenFIGI® are registered trademarks of Bloomberg Finance L.P.
- This project is not affiliated with, endorsed by, or sponsored by Bloomberg Finance L.P. or The Open Group.
Users are responsible for ensuring their use of this Actor complies with Bloomberg's terms of service and any applicable data licensing agreements.