Skip to content

Commit 29929df

Browse files
committed
Add Company Key Metrics API
1 parent 143524f commit 29929df

File tree

5 files changed

+438
-0
lines changed

5 files changed

+438
-0
lines changed

FinancialModelingPrepApi/Abstractions/CompanyValuation/ICompanyValuation.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ namespace MatthiWare.FinancialModelingPrepApi.Abstractions.CompanyValuation
88
public interface ICompanyValuation
99
{
1010
public Task<ApiResponse<CompanyProfileResponse>> GetCompanyProfileAsync(string symbol);
11+
public Task<ApiResponse<KeyMetricsTTMResponse>> GetCompanyKeyMetricsTTMAsync(string symbol);
12+
public Task<ApiResponse<List<KeyMetricsResponse>>> GetCompanyKeyMetricsAsync(string symbol, Period period = Period.Annual, int limit = 130);
1113

1214
public Task<ApiResponse<DCFResponse>> GetDiscountedCashFlowAsync(string symbol);
1315
public Task<ApiResponse<List<HistoricalDCFResponse>>> GetHistoricalDiscountedCashFlowAsync(string symbol, Period period = Period.Annual);

FinancialModelingPrepApi/Core/CompanyValuation/CompanyValuation.cs

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -272,5 +272,47 @@ public Task<ApiResponse<List<HistoricalDailyDCFResponse>>> GetHistoricalDiscount
272272

273273
return client.GetAsync<List<HistoricalDailyDCFResponse>>(url, pathParams, queryString);
274274
}
275+
276+
public async Task<ApiResponse<KeyMetricsTTMResponse>> GetCompanyKeyMetricsTTMAsync(string symbol)
277+
{
278+
const string url = "[version]/key-metrics-ttm/[symbol]";
279+
280+
var pathParams = new NameValueCollection()
281+
{
282+
{ "version", ApiVersion.v3.ToString() },
283+
{ "symbol", symbol }
284+
};
285+
286+
var result = await client.GetAsync<List<KeyMetricsTTMResponse>>(url, pathParams, null);
287+
288+
if (result.HasError)
289+
{
290+
return ApiResponse.FromError<KeyMetricsTTMResponse>(result.Error);
291+
}
292+
293+
return ApiResponse.FromSucces(result.Data.First());
294+
}
295+
296+
public Task<ApiResponse<List<KeyMetricsResponse>>> GetCompanyKeyMetricsAsync(string symbol, Period period = Period.Annual, int limit = 130)
297+
{
298+
const string url = "[version]/key-metrics/[symbol]";
299+
300+
var pathParams = new NameValueCollection()
301+
{
302+
{ "version", ApiVersion.v3.ToString() },
303+
{ "symbol", symbol }
304+
};
305+
306+
var queryString = new QueryStringBuilder();
307+
308+
queryString.Add("limit", limit);
309+
310+
if (period != Period.Annual)
311+
{
312+
queryString.Add("period", period.ToString().ToLower());
313+
}
314+
315+
return client.GetAsync<List<KeyMetricsResponse>>(url, pathParams, queryString);
316+
}
275317
}
276318
}
Lines changed: 187 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,187 @@
1+
using System.Text.Json.Serialization;
2+
3+
namespace MatthiWare.FinancialModelingPrepApi.Model.CompanyValuation
4+
{
5+
public class KeyMetricsResponse
6+
{
7+
[JsonPropertyName("symbol")]
8+
public string Symbol { get; set; }
9+
10+
[JsonPropertyName("date")]
11+
public string Date { get; set; }
12+
13+
[JsonPropertyName("period")]
14+
public string Period { get; set; }
15+
16+
[JsonPropertyName("revenuePerShare")]
17+
public double RevenuePerShare { get; set; }
18+
19+
[JsonPropertyName("netIncomePerShare")]
20+
public double NetIncomePerShare { get; set; }
21+
22+
[JsonPropertyName("operatingCashFlowPerShare")]
23+
public double OperatingCashFlowPerShare { get; set; }
24+
25+
[JsonPropertyName("freeCashFlowPerShare")]
26+
public double FreeCashFlowPerShare { get; set; }
27+
28+
[JsonPropertyName("cashPerShare")]
29+
public double CashPerShare { get; set; }
30+
31+
[JsonPropertyName("bookValuePerShare")]
32+
public double BookValuePerShare { get; set; }
33+
34+
[JsonPropertyName("tangibleBookValuePerShare")]
35+
public double TangibleBookValuePerShare { get; set; }
36+
37+
[JsonPropertyName("shareholdersEquityPerShare")]
38+
public double ShareholdersEquityPerShare { get; set; }
39+
40+
[JsonPropertyName("interestDebtPerShare")]
41+
public double InterestDebtPerShare { get; set; }
42+
43+
[JsonPropertyName("marketCap")]
44+
public double MarketCap { get; set; }
45+
46+
[JsonPropertyName("enterpriseValue")]
47+
public double EnterpriseValue { get; set; }
48+
49+
[JsonPropertyName("peRatio")]
50+
public double PeRatio { get; set; }
51+
52+
[JsonPropertyName("priceToSalesRatio")]
53+
public double PriceToSalesRatio { get; set; }
54+
55+
[JsonPropertyName("pocfratio")]
56+
public double Pocfratio { get; set; }
57+
58+
[JsonPropertyName("pfcfRatio")]
59+
public double PfcfRatio { get; set; }
60+
61+
[JsonPropertyName("pbRatio")]
62+
public double PbRatio { get; set; }
63+
64+
[JsonPropertyName("ptbRatio")]
65+
public double PtbRatio { get; set; }
66+
67+
[JsonPropertyName("evToSales")]
68+
public double EvToSales { get; set; }
69+
70+
[JsonPropertyName("enterpriseValueOverEBITDA")]
71+
public double EnterpriseValueOverEBITDA { get; set; }
72+
73+
[JsonPropertyName("evToOperatingCashFlow")]
74+
public double EvToOperatingCashFlow { get; set; }
75+
76+
[JsonPropertyName("evToFreeCashFlow")]
77+
public double EvToFreeCashFlow { get; set; }
78+
79+
[JsonPropertyName("earningsYield")]
80+
public double EarningsYield { get; set; }
81+
82+
[JsonPropertyName("freeCashFlowYield")]
83+
public double FreeCashFlowYield { get; set; }
84+
85+
[JsonPropertyName("debtToEquity")]
86+
public double DebtToEquity { get; set; }
87+
88+
[JsonPropertyName("debtToAssets")]
89+
public double DebtToAssets { get; set; }
90+
91+
[JsonPropertyName("netDebtToEBITDA")]
92+
public double NetDebtToEBITDA { get; set; }
93+
94+
[JsonPropertyName("currentRatio")]
95+
public double CurrentRatio { get; set; }
96+
97+
[JsonPropertyName("interestCoverage")]
98+
public double? InterestCoverage { get; set; }
99+
100+
[JsonPropertyName("incomeQuality")]
101+
public double IncomeQuality { get; set; }
102+
103+
[JsonPropertyName("dividendYield")]
104+
public double? DividendYield { get; set; }
105+
106+
[JsonPropertyName("payoutRatio")]
107+
public double PayoutRatio { get; set; }
108+
109+
[JsonPropertyName("salesGeneralAndAdministrativeToRevenue")]
110+
public double SalesGeneralAndAdministrativeToRevenue { get; set; }
111+
112+
[JsonPropertyName("researchAndDdevelopementToRevenue")]
113+
public double ResearchAndDdevelopementToRevenue { get; set; }
114+
115+
[JsonPropertyName("intangiblesToTotalAssets")]
116+
public double IntangiblesToTotalAssets { get; set; }
117+
118+
[JsonPropertyName("capexToOperatingCashFlow")]
119+
public double CapexToOperatingCashFlow { get; set; }
120+
121+
[JsonPropertyName("capexToRevenue")]
122+
public double CapexToRevenue { get; set; }
123+
124+
[JsonPropertyName("capexToDepreciation")]
125+
public double CapexToDepreciation { get; set; }
126+
127+
[JsonPropertyName("stockBasedCompensationToRevenue")]
128+
public double StockBasedCompensationToRevenue { get; set; }
129+
130+
[JsonPropertyName("grahamNumber")]
131+
public double GrahamNumber { get; set; }
132+
133+
[JsonPropertyName("roic")]
134+
public double Roic { get; set; }
135+
136+
[JsonPropertyName("returnOnTangibleAssets")]
137+
public double ReturnOnTangibleAssets { get; set; }
138+
139+
[JsonPropertyName("grahamNetNet")]
140+
public double GrahamNetNet { get; set; }
141+
142+
[JsonPropertyName("workingCapital")]
143+
public double WorkingCapital { get; set; }
144+
145+
[JsonPropertyName("tangibleAssetValue")]
146+
public long? TangibleAssetValue { get; set; }
147+
148+
[JsonPropertyName("netCurrentAssetValue")]
149+
public double NetCurrentAssetValue { get; set; }
150+
151+
[JsonPropertyName("investedCapital")]
152+
public double InvestedCapital { get; set; }
153+
154+
[JsonPropertyName("averageReceivables")]
155+
public double AverageReceivables { get; set; }
156+
157+
[JsonPropertyName("averagePayables")]
158+
public double AveragePayables { get; set; }
159+
160+
[JsonPropertyName("averageInventory")]
161+
public double AverageInventory { get; set; }
162+
163+
[JsonPropertyName("daysSalesOutstanding")]
164+
public double DaysSalesOutstanding { get; set; }
165+
166+
[JsonPropertyName("daysPayablesOutstanding")]
167+
public double DaysPayablesOutstanding { get; set; }
168+
169+
[JsonPropertyName("daysOfInventoryOnHand")]
170+
public double DaysOfInventoryOnHand { get; set; }
171+
172+
[JsonPropertyName("receivablesTurnover")]
173+
public double ReceivablesTurnover { get; set; }
174+
175+
[JsonPropertyName("payablesTurnover")]
176+
public double PayablesTurnover { get; set; }
177+
178+
[JsonPropertyName("inventoryTurnover")]
179+
public double InventoryTurnover { get; set; }
180+
181+
[JsonPropertyName("roe")]
182+
public double Roe { get; set; }
183+
184+
[JsonPropertyName("capexPerShare")]
185+
public double CapexPerShare { get; set; }
186+
}
187+
}

0 commit comments

Comments
 (0)