Skip to main content
Back to Learn
beginnerquickstartauthenticationbeginner

Getting Started with the eToro API

Create your account, get API keys, and make your first API call in under 10 minutes.

3 min readBy eToro Developer Relations

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

  1. Log in to etoro.com
  2. Navigate to Settings → Trading
  3. Scroll to API Key Management
  4. Click Create New Key
  5. Choose your environment: Demo (recommended for testing) or Real
  6. Select permissions: Read or Read + Write
  7. Verify via SMS
  8. Copy your API Key and User Key — store them securely

You now have two keys:

  • x-api-key — identifies your application
  • x-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

We use cookies to improve your experience. By using this site, you agree to our use of cookies. Privacy Policy (opens in new tab)