curl --request GET \
--url https://stockinsights-ai-main-95a26a0.zuplo.app/api/in/v0/financial-statements/income-statement \
--header 'Authorization: Bearer <token>'import requests
url = "https://stockinsights-ai-main-95a26a0.zuplo.app/api/in/v0/financial-statements/income-statement"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://stockinsights-ai-main-95a26a0.zuplo.app/api/in/v0/financial-statements/income-statement', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://stockinsights-ai-main-95a26a0.zuplo.app/api/in/v0/financial-statements/income-statement",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://stockinsights-ai-main-95a26a0.zuplo.app/api/in/v0/financial-statements/income-statement"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://stockinsights-ai-main-95a26a0.zuplo.app/api/in/v0/financial-statements/income-statement")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://stockinsights-ai-main-95a26a0.zuplo.app/api/in/v0/financial-statements/income-statement")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"status": "success",
"data": {
"company_id": "x9t057a0io1tdakqk19y",
"profile": "nonbank",
"statement_type": "income_statement",
"statement_scope": "consolidated",
"reporting_type": "annual",
"fiscal_year": 2025,
"fiscal_quarter": "Q4",
"period_end_date": "2025-03-31",
"audit_status": "Audited",
"currency": "INR",
"scale": "crores",
"financials": {
"income": {
"sales": 981238,
"other_income": 24973
},
"expenses": {
"raw_materials_cost": null,
"employee_cost": null,
"interest_expense": null,
"depreciation": 48062,
"other_expenses": null
},
"profit_before_tax": 114671,
"tax_expense": {
"current_tax": 27050,
"deferred_tax": 6312,
"tax_for_earlier_years": null,
"mat_credit_or_entitlement": null,
"other_tax_expenses": null
},
"profit_after_tax": 81309,
"earnings_per_share": {
"basic": 51.47,
"diluted": 51.47
}
}
}
}{
"errors": [
{
"status": "400",
"title": "Invalid field - reporting_type",
"message": "reporting_type must be one of: quarterly, half_yearly, nine_months, annual"
}
]
}{
"errors": [
{
"status": "401",
"title": "Unauthorized",
"message": "Invalid or missing API key"
}
]
}{
"errors": [
{
"status": "404",
"title": "Company not found",
"message": "No company found for ticker: INVALID"
}
]
}{
"errors": [
{
"status": "500",
"title": "Internal Server Error"
}
]
}Income Statement
Retrieve a structured income statement (profit & loss) for an Indian company. By default, this returns the latest consolidated quarterly result. Supply optional period, reporting type, or scope parameters for a different statement. The financials structure is selected by the returned profile: bank, nonbank, life_insurance, general_insurance, or investment_trust.
curl --request GET \
--url https://stockinsights-ai-main-95a26a0.zuplo.app/api/in/v0/financial-statements/income-statement \
--header 'Authorization: Bearer <token>'import requests
url = "https://stockinsights-ai-main-95a26a0.zuplo.app/api/in/v0/financial-statements/income-statement"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://stockinsights-ai-main-95a26a0.zuplo.app/api/in/v0/financial-statements/income-statement', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://stockinsights-ai-main-95a26a0.zuplo.app/api/in/v0/financial-statements/income-statement",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://stockinsights-ai-main-95a26a0.zuplo.app/api/in/v0/financial-statements/income-statement"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://stockinsights-ai-main-95a26a0.zuplo.app/api/in/v0/financial-statements/income-statement")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://stockinsights-ai-main-95a26a0.zuplo.app/api/in/v0/financial-statements/income-statement")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"status": "success",
"data": {
"company_id": "x9t057a0io1tdakqk19y",
"profile": "nonbank",
"statement_type": "income_statement",
"statement_scope": "consolidated",
"reporting_type": "annual",
"fiscal_year": 2025,
"fiscal_quarter": "Q4",
"period_end_date": "2025-03-31",
"audit_status": "Audited",
"currency": "INR",
"scale": "crores",
"financials": {
"income": {
"sales": 981238,
"other_income": 24973
},
"expenses": {
"raw_materials_cost": null,
"employee_cost": null,
"interest_expense": null,
"depreciation": 48062,
"other_expenses": null
},
"profit_before_tax": 114671,
"tax_expense": {
"current_tax": 27050,
"deferred_tax": 6312,
"tax_for_earlier_years": null,
"mat_credit_or_entitlement": null,
"other_tax_expenses": null
},
"profit_after_tax": 81309,
"earnings_per_share": {
"basic": 51.47,
"diluted": 51.47
}
}
}
}{
"errors": [
{
"status": "400",
"title": "Invalid field - reporting_type",
"message": "reporting_type must be one of: quarterly, half_yearly, nine_months, annual"
}
]
}{
"errors": [
{
"status": "401",
"title": "Unauthorized",
"message": "Invalid or missing API key"
}
]
}{
"errors": [
{
"status": "404",
"title": "Company not found",
"message": "No company found for ticker: INVALID"
}
]
}{
"errors": [
{
"status": "500",
"title": "Internal Server Error"
}
]
}ticker=RELIANCE uses:
- Latest available period
reporting_type=quarterlystatement_scope=consolidated
period_end_date for an exact historical result. Common reporting-period
dates are 2025-03-31, 2025-06-30, 2025-09-30, and 2025-12-31.
Availability depends on the selected reporting type.Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Query Parameters
Company ticker symbol. Supports formats: plain ticker (RELIANCE), exchange-prefixed with dot (NSE.RELIANCE, BSE.RELIANCE), or colon (NSE:RELIANCE, BSE:RELIANCE), and BSE numeric IDs (BSE.500325). When no exchange is specified, matches against the generic stock ticker.
"RELIANCE"
Optional reporting-period end date in YYYY-MM-DD format. Common Indian reporting boundaries include 2025-03-31, 2025-06-30, 2025-09-30, and 2025-12-31; availability depends on the selected statement and reporting type. Omit this parameter to receive the latest matching statement.
Type of reporting period. Defaults to quarterly.
quarterly, half_yearly, nine_months, annual "quarterly"
Whether to retrieve consolidated or standalone financial statements. Defaults to consolidated.
consolidated, standalone "consolidated"
Response
Successful response with income statement data. Returns null data if no statement is available for the given parameters.