Access ESG (Environmental, Social, Governance) rating data for companies, countries, sectors and ETFs.
The API uses Token Authentication. Include your token in the Authorization header on every request.
Authorization: Token <your_token>
To obtain a token, contact the administrator or use the login endpoint if available.
Customer subscriptions include 15,000 successful API requests per calendar month, with a burst limit of 30 requests per minute.
/api/usage/ do not consume requests.GET /api/usage/ returns the current period, allowance and remaining requests. Calling this endpoint does not consume the quota.
{
"access": {
"enabled": true,
"type": "subscription",
"unlimited": false
},
"period": {
"start": "2026-08-01",
"end": "2026-09-01",
"resets_at": "2026-09-01T00:00:00+02:00"
},
"usage": {
"requests": 3750,
"limit": 15000,
"remaining": 11250,
"percentage": 25.0,
"level": "normal"
},
"rate_limit": "30/min"
}
Successful customer API responses include:
X-API-Quota-Limit: 15000
X-API-Quota-Used: 3751
X-API-Quota-Remaining: 11249
X-API-Quota-Reset: 2026-09-01T00:00:00+02:00
429 Too Many Requests and a Retry-After header. Do not retry continuously; wait for the indicated delay.
Retrieves a list of all available companies.
/api/companies/GET[
{
"symbol": "AAPL",
"name": "Apple Inc."
},
...
]
Retrieves ESG rating details for a specific company. Choose between AI-generated data (ai) or historical data (legacy).
/api/esg/<symbol>GETmodel (string): ai (default) or legacyyear (int): year of the datafrequency (string): report frequency (e.g. "Annual", "Quarterly")[
{
"e": 85.5,
"s": 78.2,
"g": 90.1,
"esg": 84.6,
"year": 2023,
"frequency": "Annual"
}
]
/api/countries/GET[
{
"country_code": "FR",
"country_descr": "France"
},
...
]
Retrieves average ESG statistics for a specific country.
/api/country/<symbol>GETmodel (string): ai (default) or legacyyear (int): year of the datafrequency (string): report frequency[
{
"symbol": "FR",
"name": "France",
"mean": 75.4,
"median": 76.2,
"year": 2023,
"frequency": "Annual"
}
]
/api/sectors/GET[
{"sector": "Technology"},
{"sector": "Finance"},
...
]
/api/sector/<symbol>GETmodel (string): ai (default) or legacyETF ratings are the holdings-weighted aggregation of the underlying companies' E/S/G/ESG scores, with independent re-weighting per pillar (holdings with a missing weight or score are excluded and the remaining weights are re-normalized to 100%). ETFs whose ESG coverage is below the reliability threshold are excluded from the results.
/api/etfs/GETmodel (string): legacy (default) or aimonth (string, YYYY-MM): holdings snapshot month. If omitted, the current/latest data is used.[
{
"symbol": "IWDA.AS",
"name": "iShares Core MSCI World UCITS ETF",
"exchange": "AS",
"score_e": 68.4,
"score_s": 61.2,
"score_g": 72.9,
"score_esg": 67.5,
"coverage_esg": 92.1,
"nb_holdings_total": 500,
"band_esg": "good"
},
...
]
Retrieves the weighted ESG rating for a specific ETF.
/api/etf/<symbol>GETmodel (string): legacy (default) or aimonth (string, YYYY-MM): holdings snapshot month. If omitted, the current/latest data is used.{
"symbol": "IWDA.AS",
"name": "iShares Core MSCI World UCITS ETF",
"exchange": "AS",
"score_e": 68.4,
"score_s": 61.2,
"score_g": 72.9,
"score_esg": 67.5,
"coverage_e": 92.1,
"coverage_s": 92.1,
"coverage_g": 92.1,
"coverage_esg": 92.1,
"nb_valid_esg": 480,
"nb_missing_esg": 20,
"nb_holdings_total": 500,
"band_esg": "good"
}
month selects a specific monthly holdings snapshot, the same way the
ETF dashboard lets you pick a past month. If a snapshot
doesn't exist for the requested month, the API returns an empty result rather than an error.
curl -X GET "https://api.investverte.com/api/esg/AAPL?year=2023" \
-H "Authorization: Token 1234567890abcdef"