You will receive the report metadata and fact map (the actual data) in the JSON response. 2. Execute an Asynchronous Report Run

import requests access_token = 'YOUR_ACCESS_TOKEN' instance_url = 'https://salesforce.com' report_id = '00OXXXXXXXXXXXX' url = f"{instance_url}/services/data/v60.0/analytics/reports/{report_id}" headers = { 'Authorization': f'Bearer {access_token}', 'Content-Type': 'application/json' } response = requests.get(url, headers=headers) data = response.json() # Accessing the first row of data print(data['factMap']['T!T']['rows'][0]) Use code with caution. If you'd like, I can provide more details on: The for automation How to pass dynamic filters to the API

The synchronous API is limited to 2,000 rows. Use the asynchronous method or Bulk API for larger sets.

While the standard API returns JSON, many developers prefer CSV for bulk processing. You can trigger a CSV download by mimicking the user export behavior. GET / ?export=1&enc=UTF-8&xf=csv

By default, the API returns "formatted values" (e.g., "$1,200.00") and "raw values" (e.g., 1200). Use raw values for calculations. Example Python Snippet

Converting the using Python or Node.js

To keep your integration stable, keep these constraints in mind: