🇧🇷 B3 Brasil Stock Screener — Bovespa Quotes & Fundamentals
Pricing
from $250.00 / 1,000 b3 stock records
🇧🇷 B3 Brasil Stock Screener — Bovespa Quotes & Fundamentals
B3 / Bovespa Brazilian stock screener API — Ibovespa live quotes, market cap (BRL), P/E, P/B, dividend yield, ROE, sector. Petrobras, Vale, Itaú, Ambev universe. Bloomberg Terminal / FactSet / Refinitiv Eikon LATAM equity-data alternative for hedge funds & quants. Pay-per-result.
Pricing
from $250.00 / 1,000 b3 stock records
Rating
0.0
(0)
Developer
Stephan Corbeil
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
A Bloomberg Terminal alternative for Brazilian equities, packaged as a single Apify actor. Pull every stock listed on B3 (Brasil, Bolsa, Balcão) — Brazil's only stock exchange, formerly known as Bovespa — with prices in BRL, P/L (P/E), P/VP (P/B), dividend yield, ROE, ROIC, EV/EBITDA, net debt to equity, 5-year revenue growth, and 2-month average traded value (liquidity proxy). One run returns the entire B3 universe of roughly 700–900 papers (common stocks ON, preferred shares PN/PNA/PNB, units, BDRs) ready to drop into your value-screen, dividend-strategy, or quant pipeline.
Run a single API call. Get clean JSON. Push it into Snowflake, Databricks, BigQuery, your local Postgres, or a Google Sheet. No browser, no Selenium, no JavaScript rendering — just one HTTP fetch against a server-rendered page, parsed with BeautifulSoup, sorted by liquidity, and returned as a flat list of stock objects.
Why this actor exists
Brazilian retail investors and quant funds run into the same wall foreign-market screeners face: every commercial provider (Economática, ProfitChart, Status Invest Premium, TradingView Pro) charges R$ 50–500/month for what is, fundamentally, public data published by listed companies and aggregated by free Brazilian sites. If you need a programmatic feed — even just for a Sunday-night dividend report or a backtest of an Ibovespa value strategy — you are paying for human-friendly UIs you don't use.
This actor replaces that subscription with a per-record Apify charge of $0.02 per stock. A full 100-stock pull (the entire Ibovespa-tradeable universe sorted by liquidity) costs $2.005 — roughly R$ 10. A monthly auto-refresh of the same universe costs about $24/year. Compare to R$ 50/month × 12 = R$ 600 for any commercial Brazilian quote provider.
Quick start
Run from the Apify UI
- Click Try this actor.
- Leave the inputs at defaults (
limit: 100) for the most-liquid 100 B3 stocks sorted by 2-month average traded value. - Click Run. The actor returns in 5–10 seconds (one HTTP call to Fundamentus + parse + filter + push).
- Browse the dataset in the Storage tab, or export as CSV / JSON / Excel from the Output tab.
Run from the API (cURL)
curl -X POST "https://api.apify.com/v2/acts/nexgendata~b3-brasil-stock-screener/run-sync-get-dataset-items?token=YOUR_TOKEN" \-H "Content-Type: application/json" \-d '{"limit": 50, "min_dividend_yield": 6}'
Run from Python
from apify_client import ApifyClientclient = ApifyClient("YOUR_APIFY_TOKEN")run = client.actor("nexgendata/b3-brasil-stock-screener").call(run_input={"limit": 200,"min_liquidity_2m_brl": 1_000_000, # at least 1M BRL/day traded"min_dividend_yield": 5, # at least 5% trailing yield"max_pe_ratio": 15, # cheap on earnings})for stock in client.dataset(run["defaultDatasetId"]).iterate_items():print(stock["symbol"], stock["company_name_pt"], stock["price_brl"], stock["dividend_yield_pct"])
Output schema
Every stock object includes the following fields (BRL = Brazilian Real, percentages are unit-less floats — 8.31 means 8.31%):
| Field | Type | Description |
|---|---|---|
symbol | string | B3 ticker, e.g. PETR4, VALE3, ITUB4, BBDC4. |
yahoo_symbol | string | Yahoo Finance form: PETR4.SA. |
company_name_pt | string | Full Brazilian-Portuguese corporate name (e.g. PETROLEO BRASILEIRO S.A. - PETROBRAS). |
root_ticker | string | Ticker with class digits stripped (e.g. PETR4 → PETR). |
share_class | string | ON (Ordinária / common, voting), PN (Preferencial / preferred), PNA, PNB, UNT, etc., inferred from suffix digit. |
market | string | Always B3. |
exchange_full_name | string | Brasil, Bolsa, Balcão (Bovespa). |
country | string | Brazil. |
currency | string | BRL. |
price_brl | number | Last closing price in BRL. |
pe_ratio | number | P/L (Preço/Lucro). |
pvp_ratio | number | P/VP (Preço/Valor Patrimonial = P/B). |
psr | number | Price / Sales. |
dividend_yield_pct | number | Trailing 12-month dividend yield, in percent. |
p_ativo | number | Price / Total Assets. |
p_cap_giro | number | Price / Working Capital. |
p_ebit | number | Price / EBIT. |
p_ativ_circ_liq | number | Price / Net Current Asset Value (Graham metric). |
ev_ebit | number | Enterprise Value / EBIT. |
ev_ebitda | number | Enterprise Value / EBITDA. |
gross_margin_pct | number | Gross margin, in percent. |
ebit_margin_pct | number | EBIT margin, in percent. |
net_margin_pct | number | Net (líquida) margin, in percent. |
current_ratio | number | Liquidez Corrente. |
roic_pct | number | Return on Invested Capital, in percent. |
roe_pct | number | Return on Equity, in percent. |
liquidity_2m_brl | number | 2-month average daily traded value, in BRL. |
book_equity_brl | number | Patrimônio Líquido (book equity), in BRL. |
net_debt_to_equity | number | Dívida Líquida / Patrimônio Líquido. |
revenue_growth_5y_pct | number | 5-year revenue CAGR, in percent. |
fundamentus_url | string | Direct link to the Fundamentus detail page. |
b3_url | string | Direct link to the official B3 listed-company page. |
yahoo_finance_url | string | Direct link to Yahoo Finance quote page. |
scraped_at | string | ISO-8601 UTC timestamp of the fetch. |
Input filters
| Field | Type | Default | What it does |
|---|---|---|---|
limit | integer | 100 | Maximum stocks returned, sorted by 2-month liquidity desc. |
min_market_cap_brl | integer | 0 | Filter by patrimônio líquido (book equity, BRL) — proxy for size. |
min_liquidity_2m_brl | integer | 0 | Filter by 2-month avg daily traded value (BRL). 1M+ = tradeable, 10M+ = institutional. |
max_pe_ratio | number | 0 | Cap on P/L (P/E). Set 15 for Graham-style value screen. 0 disables. |
max_pvp_ratio | number | 0 | Cap on P/VP (P/B). Set 1 for "below book" screen. 0 disables. |
min_dividend_yield | number | 0 | Floor on trailing dividend yield, in %. Brazilian utilities/banks routinely yield 8–15%. |
min_roe_pct | number | 0 | Floor on Return on Equity, in %. Set 15 for quality screen. |
sector | string | "" | Substring filter against ticker + company name. e.g. BANCO, PETR, VALE. |
proxyConfiguration | object | Apify Proxy ON | Datacenter is fine for Fundamentus. RESIDENTIAL only if you hit a rate limit. |
How B3 ticker conventions work
If you've never traded Brazilian equities, the suffix digits encode share class:
3— ON, ordinária: voting common stock (e.g.VALE3,PETR3,BBAS3).4— PN, preferencial: preferred non-voting, usually higher dividend (e.g.PETR4,ITUB4,BBDC4).5/6/7/8— Preferred classes A/B/C/D.11— Unit (a basket of ON+PN trading as one paper, e.g.SANB11,TAEE11) or BDR (Brazilian Depositary Receipt of a foreign listing).
Petrobras has both PETR3 (voting) and PETR4 (preferred); most Brazilian dividend strategies favor PETR4 for the higher payout. The actor returns both.
Data source
The actor fetches a single server-rendered HTML page from Fundamentus.com.br, a long-running independent Brazilian fundamentals aggregator. Fundamentus pulls quarterly filings (DFP / ITR) directly from CVM (Brazil's SEC) and computes ratios on its servers — meaning the data is the same as what shows up in Economática and other commercial terminals, just a few hours later. Prices are end-of-day (last close, not real-time intraday).
For real-time intraday quotes you would need a paid B3 market-data feed; for fundamentals + close-of-day prices (the inputs to virtually every value, dividend, and quality strategy), Fundamentus is the canonical free source.
Common use cases
- Brazilian dividend portfolio —
min_dividend_yield: 8, min_liquidity_2m_brl: 5_000_000returns the high-yield subset of tradeable B3 stocks. - Magic Formula Brasil — pull all stocks, sort offline by
(roic_pct desc, ev_ebit asc)after filteringliquidity_2m_brl > 1_000_000. - Graham deep-value screen —
max_pvp_ratio: 1, max_pe_ratio: 10, min_roe_pct: 5— classic margin-of-safety filter. - Sector backtest —
sector: "BANCO"returns every Brazilian bank (Itaú, Bradesco, Santander Brasil, Banco do Brasil, Banrisul, ABC Brasil…). - Daily ETL job — schedule a 1× / day run with
limit: 500and stream the dataset into your warehouse for time-series tracking.
Cost
Pay-per-event pricing:
- $0.005 per actor start.
- $0.02 per stock returned.
A 10-stock smoke test = $0.205. A 100-stock daily refresh = $2.005 (~R$ 10 at current USD/BRL). 100 stocks × 30 days/month = $60.15/month, versus R$ 50–500/month for a commercial Brazilian terminal.
Sister actors in the NexGenData fleet
If you're screening Brazilian equities, you probably want global coverage too:
- 🇨🇳 Eastmoney China A-Share Screener — Shanghai + Shenzhen + STAR, full A-share fundamentals.
- 🇺🇸 Finviz Stock Screener — US equities with 70+ filter combinations.
- 🌍 Finance MCP Server — drop-in Model Context Protocol server that exposes all our finance actors to Claude Desktop, Cursor, and other MCP-aware LLM clients.
- 🇹🇼 TWSE Stock Screener — Taiwan Stock Exchange fundamentals.
- 🇰🇷 KOSPI Stock Screener — Korea Composite Stock Price Index fundamentals.
About NexGenData
NexGenData ships ~50 specialized data actors on Apify covering global equities, real estate, jobs, contact discovery, SEO, and SaaS-stack mapping. Every actor is built on the same playbook: find a public-but-painful-to-extract data source, wrap one HTTP call in clean JSON, charge per record. No subscriptions, no minimums, transparent pricing.
If you want to build with the same toolkit, Apify offers a generous free tier and our affiliate link gives you bonus credits → https://apify.com/nexgendata?fpr=2ayu9b