इस गाइड के अंत तक आप किसी भी मैक्रोइकॉनॉमिक इंडिकेटर को क्वेरी कर सकेंगे, उपलब्ध डेटा का पूरा कैटलॉग खोज पाएंगे, और आगामी रिलीज की तारीखों की जांच कर सकंगे सभी FXMacroData GraphQL अंत बिंदु से अधिक कुछ नहीं का उपयोग कर curl, पायथन, या जावास्क्रिप्ट. आप भी एक ही राउंड-ट्रिप में कई प्रश्नों बैच करने के लिए कैसे पता चल जाएगा ताकि अपने स्क्रिप्ट दुबला और तेजी से रहते हैं.
पूर्व शर्तें
- ए FXMacroData एपीआई कुंजी USD संकेतक और डेटा कैटलॉग कुंजी के बिना मुफ्त हैं; अन्य सभी मुद्राओं के लिए एक की आवश्यकता होती है। fxmacrodata.com
curl(या किसी भी HTTP क्लाइंट) प्रारंभिक परीक्षण कॉल के लिए- पायथन 3.9+ के साथ
requestsपुस्तकालय (pip install requests) पायथन उदाहरणों के लिए - जावास्क्रिप्ट उदाहरणों के लिए Node.js 18+
- GraphQL क्वेरी सिंटैक्स (क्रेल ब्रैकेट के अंदर एक फ़ील्ड सूची) के साथ बुनियादी परिचितता
REST के बजाय GraphQL क्यों?
FXMacroData REST API प्रत्येक संकेतक को अपने स्वयं के अंत बिंदु पर प्रति मुद्रा/संकेतक संयोजन के लिए एक राउंड-ट्रिप सेवा देता है। GraphQL आपको अपनी आवश्यकता के फ़ील्ड को ठीक से घोषित करने और एक ही HTTP अनुरोध में कई स्वतंत्र क्वेरी को जोड़ने की अनुमति देता है. यदि आप EUR मुद्रास्फीति श्रृंखला चाहते हैं और GBP नीतिगत दर और दोनों मुद्राओं के लिए आगामी रिलीज कैलेंडर, यानी चार GET अनुरोधों के बजाय एक POST।
GraphQL सतह सार्वजनिक REST अंत बिंदुओं को ठीक से दर्शाता हैः एक ही प्रमाणीकरण नियम, एक ही डेटा और एक ही क्षेत्र नाम सिर्फ एक ही के माध्यम से सेवा
POST /api/v1/graphql JSON शरीर के साथ अंत बिंदु।
एक नज़र में GraphQL अंत बिंदु
- URL:
https://fxmacrodata.com/api/v1/graphql - विधि: पोस्ट
- लेखक:
?api_key=YOUR_API_KEYक्वेरी पैरामीटर - सामग्री-प्रकारः
application/json - निःशुल्क पहुँच: अमरीकी डालर के संकेतक और
dataCatalogue/calendar(कोई कुंजी आवश्यक नहीं) - क्वेरी फ़ील्डः
announcements,dataCatalogue,calendar
चरण 1 अपना पहला GraphQL क्वेरी भेजें
प्रत्येक GraphQL अनुरोध एक JSON ऑब्जेक्ट है query key जिसका मान आपके GraphQL क्वेरी स्ट्रिंग है. एक मुफ्त USD मुद्रास्फीति क्वेਰੀ के साथ शुरू करें कोई एपीआई कुंजी की आवश्यकता नहीं हैः
curl -s -X POST "https://fxmacrodata.com/api/v1/graphql" \
-H "Content-Type: application/json" \
-d '{
"query": "{ announcements(currency: \"USD\", indicator: \"inflation\") { currency indicator data { date val pctChange } } }"
}'
प्रतिक्रिया मानक GraphQL JSON है जो एक में लिपटे हुए है data लिफाफाः
{
"data": {
"announcements": {
"currency": "USD",
"indicator": "inflation",
"data": [
{ "date": "2025-01-01", "val": 3.0, "pctChange": null },
{ "date": "2025-02-01", "val": 2.8, "pctChange": -6.67 },
{ "date": "2025-03-01", "val": 2.4, "pctChange": -14.29 }
]
}
}
}
किसी भी गैर-USD मुद्रा के लिए, अपने एपीआई कुंजी को एंडपॉइंट यूआरएल पर क्वेरी पैरामीटर के रूप में जोड़ें:
https://fxmacrodata.com/api/v1/graphql?api_key=YOUR_API_KEY
टिप कॉलआउट
pctChange पिछले डेटा बिंदु के सापेक्ष मासिक (या अवधि-समय) परिवर्तन है। श्रृंखला में पहला बिंदु हमेशा लौटाता है
null क्योंकि तुलना करने के लिए कोई पूर्व मूल्य नहीं है।
चरण 2 उपलब्ध संकेतकों की खोज करें dataCatalogue
किसी विशेष संकेतक को क्वेरी करने से पहले आप एपीआई से पूछ सकते हैं कि किसी भी मुद्रा के लिए उसके पास क्या डेटा है। dataCatalogue क्वेरी प्रत्येक उपलब्ध सूचक स्लग, इसके मानव-पठनीय नाम, इकाई, रिलीज़ आवृत्ति, और क्या केंद्रीय बैंक इसके लिए आधिकारिक पूर्वानुमान प्रकाशित करता है, को लौटाता है।
curl -s -X POST "https://fxmacrodata.com/api/v1/graphql" \
-H "Content-Type: application/json" \
-d '{
"query": "{ dataCatalogue(currency: \"EUR\") { currency indicators { slug name unit frequency hasOfficialForecast } } }"
}'
उदाहरण उत्तर (संक्षिप्त):
{
"data": {
"dataCatalogue": {
"currency": "EUR",
"indicators": [
{ "slug": "inflation", "name": "Inflation (CPI)", "unit": "%", "frequency": "monthly", "hasOfficialForecast": false },
{ "slug": "policy_rate", "name": "Policy Rate", "unit": "%", "frequency": "irregular", "hasOfficialForecast": true },
{ "slug": "gdp", "name": "GDP Growth", "unit": "%", "frequency": "quarterly", "hasOfficialForecast": false },
{ "slug": "unemployment", "name": "Unemployment", "unit": "%", "frequency": "monthly", "hasOfficialForecast": false }
]
}
}
}
slug मानों के रूप में आप पारित सटीक स्ट्रिंग हैं indicator
बाद में तर्क announcements आप पूर्ण सूचक सूची को इंटरैक्टिव रूप से
एपीआई डेटा डॉक्स. .
चरण 3 वैकल्पिक दिनांक फ़िल्टर के साथ ऐतिहासिक डेटा प्राप्त करें
announcements क्वेरी स्वीकार करता है वैकल्पिक startDate और
endDate तर्क में YYYY-MM-DD श्रृंखला के साथ केंद्रीय बैंक के लक्ष्य को भी अनुरोध कर सकते हैं, जो कि आधिकारिक दर लक्ष्य के साथ लाइव रीडिंग की तुलना करते समय उपयोगी है।
curl -s -X POST "https://fxmacrodata.com/api/v1/graphql?api_key=YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"query": "query { announcements(currency: \"AUD\", indicator: \"policy_rate\", startDate: \"2024-01-01\") { currency indicator hasOfficialForecast cbTarget { description current { effectiveFrom target } } data { date val announcementDatetime } } }"
}'
प्रतिक्रियाओं के मुख्य बिंदुः
{
"data": {
"announcements": {
"currency": "AUD",
"indicator": "policy_rate",
"hasOfficialForecast": true,
"cbTarget": {
"description": "RBA cash rate target band",
"current": { "effectiveFrom": "2023-11-07", "target": 4.35 }
},
"data": [
{ "date": "2024-02-06", "val": 4.35, "announcementDatetime": 1707199200 },
{ "date": "2024-03-19", "val": 4.35, "announcementDatetime": 1710813600 }
]
}
}
}
announcementDatetime आधिकारिक प्रकाशन का एक यूनिक्स टाइमस्टैम्प (सेकंड, यूटीसी) है। आप एयूडी संकेतकों के लिए क्षेत्र स्तर के प्रलेखन को
एयूडी नीतिगत दरें. .
चरण 4 रिलीज कैलेंडर की क्वेरी करें
calendar क्वेरी किसी दिए गए मुद्रा के लिए प्रत्येक आगामी संकेतक रिलीज के लिए निर्धारित UTC घोषणा समय लौटाता है। एक वैकल्पिक पास करें indicator
परिणामों को एक ही सूचक तक सीमित करने का तर्क।
curl -s -X POST "https://fxmacrodata.com/api/v1/graphql?api_key=YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"query": "{ calendar(currency: \"GBP\", indicator: \"inflation\") { currency data { release announcementDatetime } } }"
}'
{
"data": {
"calendar": {
"currency": "GBP",
"data": [
{ "release": "inflation", "announcementDatetime": 1745917200 }
]
}
}
}
परिवर्तित करें announcementDatetime के साथ पायथन में मानव-पठनीय UTC समय के लिए
datetime.utcfromtimestamp(1745917200), या जावास्क्रिप्ट में के साथ
new Date(1745917200 * 1000).toISOString()GBP मुद्रास्फीति सूचक के विवरण के लिए देखें
GBP मुद्रास्फीति दस्तावेज. .
चरण 5 एक अनुरोध में कई प्रश्नों का बैच
GraphQL का सबसे बड़ा व्यावहारिक लाभ एक ही HTTP POST में कई स्वतंत्र क्वेरी का नाम और भेजने की क्षमता है। फ़ील्ड नाम संघर्ष से बचने के लिए क्वेરી उपनामों का उपयोग करें प्रत्येक उपनाम में एक अलग कुंजी बन जाता है data प्रतिक्रिया वस्तु।
curl -s -X POST "https://fxmacrodata.com/api/v1/graphql?api_key=YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"query": "query MultiIndicator { eurInflation: announcements(currency: \"EUR\", indicator: \"inflation\") { currency indicator data { date val } } gbpRate: announcements(currency: \"GBP\", indicator: \"policy_rate\") { currency indicator data { date val } } audCalendar: calendar(currency: \"AUD\") { currency data { release announcementDatetime } } }"
}'
प्रतिक्रिया एक पेलोड में तीनों परिणामों को ले जाती हैः
{
"data": {
"eurInflation": { "currency": "EUR", "indicator": "inflation", "data": [ ... ] },
"gbpRate": { "currency": "GBP", "indicator": "policy_rate", "data": [ ... ] },
"audCalendar": { "currency": "AUD", "data": [ ... ] }
}
}
टिप कॉलआउट
चरण 6 पायथन क्लाइंट
नीचे दिया गया पैटर्न GraphQL अनुरोधों को एक छोटे से सहायक में लपेटता है ताकि आपका एप्लिकेशन कोड पठनीय रहे. यह समान कार्य के साथ एकल क्वेरी और बैच किए गए उपनाम क्वेरि का समर्थन करता है.
import requests
GRAPHQL_URL = "https://fxmacrodata.com/api/v1/graphql"
API_KEY = "YOUR_API_KEY" # leave empty for free USD/catalogue endpoints
def gql(query: str) -> dict:
"""Send a GraphQL query and return the parsed `data` object."""
params = {"api_key": API_KEY} if API_KEY else {}
resp = requests.post(
GRAPHQL_URL,
params=params,
json={"query": query},
headers={"Content-Type": "application/json"},
timeout=15,
)
resp.raise_for_status()
payload = resp.json()
if "errors" in payload:
raise RuntimeError(f"GraphQL errors: {payload['errors']}")
return payload["data"]
# ── Discover indicators for AUD ──────────────────────────────────────────────
catalogue = gql('{ dataCatalogue(currency: "AUD") { indicators { slug name frequency } } }')
for ind in catalogue["dataCatalogue"]["indicators"]:
print(f" {ind['slug']:25s} {ind['name']} ({ind['frequency']})")
# ── Fetch EUR inflation + GBP policy rate in one round-trip ─────────────────
batch = gql('''
query {
eurInflation: announcements(currency: "EUR", indicator: "inflation") {
currency indicator data { date val pctChange }
}
gbpRate: announcements(currency: "GBP", indicator: "policy_rate") {
currency indicator data { date val }
}
}
''')
eur_latest = batch["eurInflation"]["data"][-1]
gbp_latest = batch["gbpRate"]["data"][-1]
print(f"EUR CPI {eur_latest['date']}: {eur_latest['val']}% ({eur_latest['pctChange']:+.2f}% MoM)")
print(f"GBP Rate {gbp_latest['date']}: {gbp_latest['val']}%")
चरण 7 जावास्क्रिप्ट / नोड.जेएस क्लाइंट
मूल निवासी fetch एपीआई (नोड.जेएस 18+) न्यूनतम बॉयलरप्लेट के साथ GraphQL अनुरोधों को संभालता है। पैटर्न ऊपर पायथन सहायक को दर्शाता है.
const GRAPHQL_URL = "https://fxmacrodata.com/api/v1/graphql";
const API_KEY = "YOUR_API_KEY"; // set to "" for free USD/catalogue endpoints
async function gql(query) {
const url = API_KEY ? `${GRAPHQL_URL}?api_key=${API_KEY}` : GRAPHQL_URL;
const resp = await fetch(url, {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ query }),
});
if (!resp.ok) throw new Error(`HTTP ${resp.status}`);
const payload = await resp.json();
if (payload.errors) throw new Error(JSON.stringify(payload.errors));
return payload.data;
}
// Batched query: EUR inflation + calendar
const data = await gql(`
query {
eurInflation: announcements(currency: "EUR", indicator: "inflation") {
data { date val pctChange }
}
eurCalendar: calendar(currency: "EUR", indicator: "inflation") {
data { release announcementDatetime }
}
}
`);
const latest = data.eurInflation.data.at(-1);
const nextRelease = data.eurCalendar.data[0];
console.log(`EUR CPI ${latest.date}: ${latest.val}% (${latest.pctChange > 0 ? "+" : ""}${latest.pctChange?.toFixed(2)}% MoM)`);
if (nextRelease) {
const dt = new Date(nextRelease.announcementDatetime * 1000).toISOString();
console.log(`Next EUR inflation release: ${dt}`);
}
कदम 8 गलतियों से समझदारी से निपटें
GraphQL HTTP 200 को तब भी लौटाता है जब कोई क्वेरी फ़ील्ड विफल हो जाता है. शीर्ष-स्तर में त्रुटियां दिखाई देती हैं
errors किसी भी आंशिक के साथ array data जो सफल हुआ. प्रतिक्रिया का उपयोग करने से पहले इस सरणी की जाँच करें एक बैच किए गए क्वेरी में एक असफल उपनाम अन्य उपनामों को डेटा वापस करने से नहीं रोकेगा.
payload = resp.json()
# Partial success: some aliases may have data, others may have errors
if "errors" in payload:
for err in payload["errors"]:
print(f"[GraphQL error] {err.get('message')} — path: {err.get('path')}")
data = payload.get("data") or {}
if "eurInflation" in data and data["eurInflation"]:
process(data["eurInflation"])
सूचना कॉलआउट
- बिना समर्थन वाली मुद्रा
errorsarray में एक संदेश होगा जैसे "असमर्थित मुद्राः XYZ"अपनी मुद्रा कोड की जाँच करें एपीआई दस्तावेज. - अमान्य संकेतक चलाएँ
dataCatalogueपहले जांच करें कि आपके लक्ष्य मुद्रा के लिए सूचक स्लग मौजूद है। - प्रमाणीकरण त्रुटि HTTP 401 या एक अमान्य कुंजी का हवाला देने वाला GraphQL त्रुटि. सत्यापित करें
api_keyURL के साथ जोड़ा जाता है, JSON शरीर नहीं।
संक्षिप्त आह्वान
आपने जो हासिल किया
- ✓ अपनी पहली GraphQL क्वेरी पर भेजी
https://fxmacrodata.com/api/v1/graphql - ✓ इस्तेमाल किया
dataCatalogueकिसी मुद्रा के लिए उपलब्ध प्रत्येक संकेतक का पता लगाने के लिए - ✓ फ़िल्टर किए गए ऐतिहासिक डेटा को ✓
startDateऔरendDateतर्क - ✓ ✓ रिलीज़ के समय के साथ आने वाले रिलीज के समय की मुहरें प्राप्त करें
calendarप्रश्न - ✓ नामित उपनामों का उपयोग करके एक ही HTTP POST में कई स्वतंत्र क्वेरी को बैच किया गया
- ✓ पायथन और जावास्क्रिप्ट दोनों में निर्मित पुनः प्रयोज्य GraphQL सहायक कार्य
- ✓ अन्य उपनामों से वैध डेटा को खारिज किए बिना आंशिक त्रुटियों का प्रबंधन किया
अगला कदम
अब जब आप GraphQL अंत बिंदु को धाराप्रवाह रूप से क्वेरी कर सकते हैं, तो कुछ प्राकृतिक एक्सटेंशन आपके एकीकरण को उत्पादन के लिए तैयार करेंगे:
-
रिलीज के समय के आसपास प्रश्नों को शेड्यूल करें। संयोजन
calendarमें वर्णित अनुसूची पैटर्न के साथ क्वेरी इंडिकेटर फ़ेच शेड्यूल करने के लिए रिलीज़ कैलेंडर एपीआई का उपयोग कैसे करें हर घोषणा से ठीक पहले जागना और अपने आगannouncementsनए डेटा प्रकाशित होने के क्षण से ही प्रश्न पूछना। -
पूरी योजना को परस्पर क्रिया से देखें। यदि आप के साथ एक डेवलपर वातावरण तक पहुँच है
ENABLE_GRAPHIQL=true, खुला/api/v1/graphqlअपने ब्राउज़र में प्रत्येक क्षेत्र के लिए स्वतः पूर्ण और इनलाइन प्रलेखन के साथ अंतर्निहित GraphiQL IDE का उपयोग करने के लिए। -
अपनी कवरेज को अधिक मुद्राओं तक बढ़ाएं। भाग जाओ।
dataCatalogueसमर्थित मुद्राओं USD, EUR, GBP, AUD, CAD, JPY, CHF और NZD के लिए जी-8 विदेशी मुद्रा ब्रह्मांड में उपलब्ध डेटा की पूरी तस्वीर बनाने के लिए।
FXMacroData टीम