We use cookies to improve your experience. By using this site, you agree to our use of cookies. Privacy Policy (opens in new tab)
Learn how to get your API keys, make your first request, and understand eToro API response formats.
Before you begin, you'll need:
Let's fetch a list of available instruments using the eToro API.
import { randomUUID } from "node:crypto";
const API_BASE = "https://public-api.etoro.com/api/v1";
const response = await fetch(`${API_BASE}/market-data/instruments`, {
headers: {
"x-api-key": process.env.ETORO_API_KEY,
"x-user-key": process.env.ETORO_USER_KEY,
"x-request-id": randomUUID(),
"Accept": "application/json",
},
});
const data = await response.json();
console.log(`Found ${data.instruments.length} instruments`);
curl -X GET "https://public-api.etoro.com/api/v1/market-data/instruments" \
-H "x-api-key: $ETORO_API_KEY" \
-H "x-user-key: $ETORO_USER_KEY" \
-H "x-request-id: $(uuidgen)" \
-H "Accept: application/json"
import uuid
import requests
API_BASE = "https://public-api.etoro.com/api/v1"
headers = {
"x-api-key": os.environ["ETORO_API_KEY"],
"x-user-key": os.environ["ETORO_USER_KEY"],
"x-request-id": str(uuid.uuid4()),
"Accept": "application/json",
}
response = requests.get(f"{API_BASE}/market-data/instruments", headers=headers)
data = response.json()
print(f"Found {len(data['instruments'])} instruments")
eToro API responses contain your requested data. Include an x-request-id header on every call so support can trace issues back to specific requests.
Common HTTP status codes:
Retry-After header and slow down)The eToro API enforces rate limits to ensure fair usage:
| Tier | Rate Limit |
|---|---|
| Free | 100 req/min |
| Standard | 1,000 req/min |
| Premium | 10,000 req/min |
Check the X-RateLimit-Remaining and X-RateLimit-Reset headers in each response to monitor your usage.
Now that you've made your first request, explore these guides: