Tools for every builder journey
Explore agent surfaces, MCP-ready IDEs, visual app builders, and utilities — then drop into language quickstarts when you are ready to ship code.
Agent & AI Surfaces
Higher-level surfaces that let agents and assistants plan, retrieve context, and execute flows against eToro — without wiring every endpoint by hand.
IDE & AI Tools
AI-native editors that pair with the eToro MCP server so you can describe intent, inspect schemas, and ship integrations from the same environment where you code.
App Builders
Visual and AI-assisted builders for rapid UI and app scaffolding on top of the eToro APIs — ideal when you want working screens before you harden production code.
Builder Utilities
Day-to-day tools for trying endpoints, scripting against the platform, and validating integrations from the terminal or browser.
Language quickstarts
No proprietary SDK needed — use your language's standard HTTP library. Copy a snippet and make your first API call in seconds.
Python
requestsUse any HTTP library — requests, httpx, or aiohttp. No proprietary SDK required.
pip install requestsimport os, uuid, requests
headers = {
"x-api-key": os.environ["ETORO_API_KEY"],
"x-user-key": os.environ["ETORO_USER_KEY"],
"x-request-id": str(uuid.uuid4()),
}
resp = requests.get(
"https://public-api.etoro.com/api/v1/market-data/rates",
headers=headers,
)
resp.raise_for_status()
print(resp.json())JavaScript / TypeScript
fetchBuilt-in fetch in Node.js 18+. Works with any HTTP client — axios, got, or undici.
import { randomUUID } from "node:crypto";
const res = await fetch(
"https://public-api.etoro.com/api/v1/market-data/rates",
{
headers: {
"x-api-key": process.env.ETORO_API_KEY,
"x-user-key": process.env.ETORO_USER_KEY,
"x-request-id": randomUUID(),
},
}
);
if (!res.ok) throw new Error(res.statusText);
console.log(await res.json());Go
net/httpStandard library only — crypto/rand generates a UUID v4 for x-request-id, then net/http fires the request.
package main
import (
"crypto/rand"
"fmt"
"io"
"log"
"net/http"
"os"
)
func main() {
var u [16]byte
if _, err := rand.Read(u[:]); err != nil {
log.Fatal(err)
}
u[6] = (u[6] & 0x0f) | 0x40
u[8] = (u[8] & 0x3f) | 0x80
rid := fmt.Sprintf("%x-%x-%x-%x-%x", u[0:4], u[4:6], u[6:8], u[8:10], u[10:])
req, err := http.NewRequest(
"GET",
"https://public-api.etoro.com/api/v1/market-data/rates",
nil,
)
if err != nil {
log.Fatal(err)
}
req.Header.Set("x-api-key", os.Getenv("ETORO_API_KEY"))
req.Header.Set("x-user-key", os.Getenv("ETORO_USER_KEY"))
req.Header.Set("x-request-id", rid)
resp, err := http.DefaultClient.Do(req)
if err != nil {
log.Fatal(err)
}
defer resp.Body.Close()
if resp.StatusCode != http.StatusOK {
log.Fatalf("unexpected status: %s", resp.Status)
}
body, err := io.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
fmt.Println(string(body))
}cURL / REST
REST APINo SDK needed — call endpoints directly with any HTTP client. Full reference with request/response examples.
curl https://public-api.etoro.com/api/v1/market-data/rates \
-H "x-api-key: $ETORO_API_KEY" \
-H "x-user-key: $ETORO_USER_KEY" \
-H "x-request-id: $(uuidgen)"