---
name: finnhub-ingestion
description: "How to get Finnhub data into a pandas DataFrame and Parquet: access, the request, the format, limits, quirks and terms."
---

# Load Finnhub US company profiles into pandas and Parquet for personal use

Source entry: https://signal-lab-jet.vercel.app/datasets/finnhub
Provider: https://finnhub.io
Checked against the provider's documentation: 2026-10-29

## Access
- A free API token is required. Put it in FINNHUB_API_KEY.
- Listed plans are for personal use unless explicitly stated otherwise.

## Request
```bash
curl 'https://finnhub.io/api/v1/stock/profile2?symbol=AAPL&token='$FINNHUB_API_KEY
```

## Format
JSON object with company profile fields including ticker, name, country, currency, exchange, ipo, marketCapitalization and shareOutstanding.

## Load into pandas and Parquet
Needs Python 3 with requests, pandas and pyarrow.
```python
"""Finnhub US company profiles -> pandas -> Parquet. Personal use."""
import os
import requests
import pandas as pd

rows = []
for symbol in ("AAPL", "MSFT"):
    r = requests.get("https://finnhub.io/api/v1/stock/profile2",
                     params={"symbol": symbol, "token": os.environ["FINNHUB_API_KEY"]}, timeout=30)
    r.raise_for_status()
    rows.append(r.json())
df = pd.DataFrame(rows)
df["ipo"] = pd.to_datetime(df["ipo"], errors="coerce")
df.to_parquet("finnhub_company_profiles.parquet", index=False)
print(len(df), "companies;", ", ".join(df["ticker"]))
```
Needs a personal API key; not run.

## Limits
- Free: 60 API calls per minute.

## Quirks
- Historical price candles are not included on the free plan.
- The free fundamentals and estimates coverage is US-only.
- Do not share data or derived results without written approval.

## Terms and attribution
- Plans listed on Finnhub are strictly for personal use unless explicitly stated otherwise.
- A personal plan cannot be used by a business, even internally, without written approval.
- Redistribution or sharing data or derived results requires written approval.
- Terms page: https://finnhub.io/terms-of-service

## Sources
- https://finnhub.io/terms-of-service: "All plan listed on Finnhub website is strictly for personal use unless explicitly stated otherwise."
- https://finnhub.io/terms-of-service: "Personal plan can’t be used by any business even internally without a written approval."
- https://finnhub.io/terms-of-service: "not redistribute or share access to data or derived results"

Information for educational purposes only. Free tiers, limits and licenses belong to the providers and may change; check the provider's own terms before using the data.
