Getting Started with the eToro API
Create your account, get API keys, and make your first API call in under 10 minutes.
Overview
The eToro API lets you access market data, execute trades, manage watchlists, and tap into social trading features — all programmatically. This guide walks you through getting set up and making your first call.
Prerequisites
- An eToro account (sign up here)
- Account verification (KYC) completed
- A terminal or HTTP client (curl, Postman, or any programming language)
Step 1 — Get Your API Keys
- Log in to etoro.com
- Navigate to Settings → Trading
- Scroll to API Key Management
- Click Create New Key
- Choose your environment: Demo (recommended for testing) or Real
- Select permissions: Read or Read + Write
- Verify via SMS
- Copy your API Key and User Key — store them securely
You now have two keys:
x-api-key— identifies your applicationx-user-key— identifies your user account
Step 2 — Understand Authentication
Every API request requires three headers:
x-api-key: <YOUR_API_KEY>
x-user-key: <YOUR_USER_KEY>
x-request-id: <UNIQUE_UUID>
The x-request-id must be a unique UUID for each request. Most languages have built-in UUID generators.
There is no OAuth2 flow, no Bearer tokens, and no client secrets. Authentication is header-based.
Step 3 — Make Your First Call
Let's fetch current market rates. Open your terminal and run:
curl https://public-api.etoro.com/api/v1/market-data/instruments/rates \
-H "x-api-key: $ETORO_API_KEY" \
-H "x-user-key: $ETORO_USER_KEY" \
-H "x-request-id: $(uuidgen)"
You should see a JSON response with current bid/ask prices for available instruments.
Using JavaScript
const crypto = require('crypto');
const headers = {
'x-api-key': process.env.ETORO_API_KEY,
'x-user-key': process.env.ETORO_USER_KEY,
'x-request-id': crypto.randomUUID(),
};
const res = await fetch(
'https://public-api.etoro.com/api/v1/market-data/instruments/rates',
{ headers }
);
const data = await res.json();
console.log(data);
Using Python
import os, uuid, httpx
headers = {
"x-api-key": os.environ["ETORO_API_KEY"],
"x-user-key": os.environ["ETORO_USER_KEY"],
"x-request-id": str(uuid.uuid4()),
}
res = httpx.get(
"https://public-api.etoro.com/api/v1/market-data/instruments/rates",
headers=headers,
)
print(res.json())
Step 4 — Search for an Instrument
Find a specific instrument by symbol:
curl "https://public-api.etoro.com/api/v1/market-data/search?internalSymbolFull=AAPL" \
-H "x-api-key: $ETORO_API_KEY" \
-H "x-user-key: $ETORO_USER_KEY" \
-H "x-request-id: $(uuidgen)"
The response includes the instrumentId you'll need for trading and other endpoints.
Rate Limits
- GET requests: 60 per minute
- POST/PUT/DELETE requests: 20 per minute
- Exceeding limits returns
429 Too Many Requests
Next Steps
- Market Data Deep Dive — explore instruments, candles, and real-time rates
- Demo Trading Guide — place your first trade on the demo account
- API Reference — full endpoint documentation