Playbook · Financial Market Data
Convert an ISIN, exchange code or company name to a stock ticker
Send an ISIN, a local exchange code or a company name and get the matching ticker with its exchange, currency and price, plus the other exchanges the share trades on.
In short
Call /search with the ISIN, exchange code or company name as the query. data.stock lists every matching listing with symbol, exchange, currency and price, so you can pick the exchange you need.
The use case
Broker statements, fund holdings and data feeds identify shares by ISIN or by a local code, while charts and quote APIs want a ticker. Mapping one to the other is the first step of every portfolio import.
Who does this: Portfolio trackers and wealth apps importing statements, fintech data teams normalizing identifiers, and research tools matching company names to listed shares.
How to do it
Uses the Real-Time Finance Data API, tested live on October 28, 2026. Call /search with the identifier as the query. Here, Apple's ISIN:
import requests
r = requests.get(
"https://api.openwebninja.com/realtime-finance-data/search",
headers={"x-api-key": "YOUR_API_KEY"},
params={"query": "US0378331005"},
)
for s in r.json()["data"]["stock"]:
print(s["symbol"], "|", s["name"], "|", s["exchange"], s["currency"], s["price"])AAPL:NASDAQ | Apple Inc | NASDAQ USD 347.1
AAPL:WSE | Apple Inc | WSE PLN 1348.6
1AAPL:BIT | Apple Inc | BIT EUR 294.9
AAPL:SWX | Apple Inc | SWX CHF 280.7
APC:ETR | Apple Inc | ETR EUR 311.1
AAPL-USD:SWX | Apple Inc | SWX USD 312.5{
"status": "OK",
"request_id": "ec55ece7-d127-4a77-9be8-d23d5a04ebe4",
"data": {
"stock": [
{
"symbol": "AAPL:NASDAQ",
"name": "Apple Inc",
"type": "stock",
"price": 347.1,
"change": 3.19,
"change_percent": 0.9276,
"previous_close": 343.91,
"last_update_utc": "2026-10-28 09:29:11",
"country_code": "US",
"exchange": "NASDAQ",
"exchange_open": "2026-10-27 09:30:00",
"exchange_close": "2026-10-27 16:00:00",
"timezone": "America/New_York",
"utc_offset_sec": -14400,
"currency": "USD",
"google_mid": "/m/07zmbvf"
},
{
"symbol": "AAPL:WSE",
"name": "Apple Inc",
"type": "stock",
"price": 1348.6,
"change": 0,
"change_percent": 0,
"previous_close": 1348.6,
"last_update_utc": "2026-10-28 08:04:42",
"country_code": "PL",
"exchange": "WSE",
"exchange_open": "2026-10-26 09:00:00",
"exchange_close": "2026-10-26 17:00:00",
"timezone": "Europe/Warsaw",
"utc_offset_sec": 3600,
"currency": "PLN",
"google_mid": "/g/11w4ft3n8v"
},
{
"symbol": "1AAPL:BIT",
"name": "Apple Inc",
"type": "stock",
"price": 294.9,
"change": 2.8,
"change_percent": 0.9586,
"previous_close": 292.1,
"last_update_utc": "2026-10-02 16:00:00",
"country_code": "IT",
"exchange": "BIT",
"exchange_open": "2026-10-02 09:00:00",
"exchange_close": "2026-10-02 17:26:00",
"timezone": "Europe/Rome",
"utc_offset_sec": 3600,
"currency": "EUR",
"google_mid": "/g/11fzyls3dt"
},
{
"symbol": "AAPL:SWX",
"name": "Apple Inc",
"type": "stock",
"price": 280.7,
"change": 0,
"change_percent": 0,
"previous_close": 280.7,
"last_update_utc": "2026-10-28 09:06:43",
"country_code": "CH",
"exchange": "SWX",
"exchange_open": "2026-10-20 09:00:00",
"exchange_close": "2026-10-20 17:30:00",
"timezone": "Europe/Zurich",
"utc_offset_sec": 3600,
"currency": "CHF",
"google_mid": "/g/11b6dns5cc"
},
{
"symbol": "APC:ETR",
"name": "Apple Inc",
"type": "stock",
"price": 311.1,
"change": -0.15,
"change_percent": -0.0482,
"previous_close": 311.25,
"last_update_utc": "2026-10-28 09:12:04",
"country_code": "DE",
"exchange": "ETR",
"exchange_open": "2026-10-28 09:00:00",
"exchange_close": "2026-10-28 17:30:00",
"timezone": "Europe/Berlin",
"utc_offset_sec": 3600,
"currency": "EUR",
"google_mid": "/g/11f102cqtm"
},
{
"symbol": "AAPL-USD:SWX",
"name": "Apple Inc",
"type": "stock",
"price": 312.5,
"change": 0,
"change_percent": 0,
"previous_close": 312.5,
"last_update_utc": "2026-10-28 09:01:54",
"country_code": "CH",
"exchange": "SWX",
"exchange_open": "2026-06-08 09:00:00",
"exchange_close": "2026-06-08 17:30:00",
"timezone": "Europe/Zurich",
"utc_offset_sec": 3600,
"currency": "USD",
"google_mid": "/g/11cp7hgxn5"
}
],
"ETF": [],
"index": [],
"mutual_fund": [],
"currency": [],
"futures": []
}
}For a whole list
For a list of mixed identifiers, keep the first match and count the other listings:
import csv
import requests
API_KEY = "YOUR_API_KEY"
URL = "https://api.openwebninja.com/realtime-finance-data/search"
inputs = ["US0378331005", "DE0007236101", "603345", "Siemens AG", "Siemens"]
with open("tickers.csv", "w", newline="") as f:
w = csv.writer(f)
w.writerow(["input", "symbol", "name", "exchange", "currency", "other_listings"])
for q in inputs:
stocks = (requests.get(URL, headers={"x-api-key": API_KEY},
params={"query": q}, timeout=60).json().get("data") or {}).get("stock") or []
top = stocks[0] if stocks else {}
w.writerow([q, top.get("symbol"), top.get("name"), top.get("exchange"), top.get("currency"),
len(stocks) - 1 if stocks else 0])input,symbol,name,exchange,currency,other_listings
US0378331005,AAPL:NASDAQ,Apple Inc,NASDAQ,USD,5
DE0007236101,SIE:VIE,Siemens AG,VIE,EUR,5
603345,603345:SHA,Anjoy Foods Group Co Ltd,SHA,CNY,0
Siemens AG,SIE:VIE,Siemens AG,VIE,EUR,4
Siemens,SIEMENS:NSE,Siemens Ltd,NSE,INR,4Five lookups took 6 seconds.
Good to know
- An ISIN returns every listing of the share. Apple's ISIN returned 6, from NASDAQ to Warsaw and Milan.
- The first listing is not always the home exchange. Siemens' ISIN returned Vienna (SIE:VIE) first, so pick the exchange you want from the list.
- Bare local codes work. 603345 returned Anjoy Foods on the Shanghai exchange.
- Company names are ambiguous. "Siemens" returned Siemens Ltd in India; "Siemens AG" returned the German company.
Frequently asked questions
How do I convert the ETF ISINs on my broker statement to tickers?
The response has separate lists for stocks, ETFs, indexes, mutual funds, currencies and futures, so search with the ETF's ISIN or name and read the ETF list.
After converting ISINs to tickers, how do I get live prices for all of them at once?
Each match already includes price, change and previous close. For several tickers at once, /stock-quote takes up to 100 symbols per request.
Should I search by ISIN or by company name?
ISINs and exchange codes give exact matches. Company names can match the wrong company, as with Siemens above.
Match a list of company names or addresses to their Google Maps listings
Send a business name with its address or city and get back the matching Google Maps listing: place ID, phone, website, rating and whether it is still open.
Local Business Data
Check the Amazon buy box and every seller's price for any ASIN
One API call per ASIN returns the buy box winner and every competing offer, with shipping, FBA status and the delivery date for your ZIP code.
Real-Time Amazon Data
Get today's Amazon deals filtered by discount, rating and category
One call returns 30 current Amazon deals with deal price, list price, discount and ASIN, filtered the way Amazon's deals page filters them.
Real-Time Amazon Data
Start building with real-time web data
Every API includes a free tier. No credit card required, and the first request is a minute away.