Python
ไม่จำเป็นต้องใช้ SDK เพราะ Frankfurter เป็น HTTPS มาตรฐานที่ส่งคืน JSON ชั้นเดียว จึงใช้ไลบรารี HTTP ที่คุณคุ้นเคยอยู่แล้วได้ทันที โดยไม่ต้องใช้ API key และไม่ต้องสมัครบัญชี
เริ่มต้นอย่างรวดเร็ว
ดึงอัตราแลกเปลี่ยนและคำนวณยอดเงิน:
import requests
res = requests.get("https://api.frankfurter.dev/v2/rate/usd/eur")
data = res.json()
total = 100 * data["rate"] ผลลัพธ์ที่ได้เป็นออบเจกต์ชั้นเดียว: {"date": "2026-07-17", "base": "USD", "quote": "EUR", "rate": 0.8739} หากรหัสสกุลเงินไม่ถูกต้อง API จะส่งคืนสถานะ 422 พร้อมข้อความ JSON
การคำนวณตัวเลขทางการเงินอย่างแม่นยำ
ชนิดข้อมูล float เหมาะสำหรับการแสดงผลทั่วไปแต่ไม่ควรใช้กับงานบัญชี แนะนำให้แปลงอัตราแลกเปลี่ยนเป็น Decimal โดยส่ง parse_float ต่อไปยัง json.loads:
from decimal import Decimal
import requests
res = requests.get("https://api.frankfurter.dev/v2/rate/usd/eur")
data = res.json(parse_float=Decimal)
total = Decimal("100") * data["rate"]ดึงหลายสกุลเงินพร้อมกัน
/v2/rates ส่งคืนอาร์เรย์ชั้นเดียวที่มีหนึ่งแถวต่อหนึ่งสกุลเงินปลายทาง แปลงเป็น dictionary สำหรับค้นหาค่าด้วย comprehension ได้เลย หากไม่ระบุ quotes จะได้รับข้อมูลทุกสกุลเงิน
res = requests.get(
"https://api.frankfurter.dev/v2/rates",
params={"base": "usd", "quotes": "eur,gbp,jpy"},
)
rates = {row["quote"]: row["rate"] for row in res.json()}แคชข้อมูลที่ไม่เปลี่ยนแปลง
อัตราแลกเปลี่ยนย้อนหลังของแหล่งข้อมูลที่ล็อกไว้จะไม่เปลี่ยนแปลง จึงแคชไว้นานเท่าใดก็ได้ ส่วนอัตราเฉลี่ยรวมอาจขยับเมื่อมีข้อมูลใหม่เข้ามา และอัตราล่าสุดจะเปลี่ยนเมื่อแหล่งข้อมูลประกาศอัตราใหม่ไม่กี่ครั้งต่อวันทำการ จึงควรตั้งค่า TTL สั้นๆ เมื่อใช้ requests-cache การทำแคชทำได้ในบรรทัดเดียว:
import requests_cache
session = requests_cache.CachedSession("frankfurter", expire_after=3600)
res = session.get("https://api.frankfurter.dev/v2/rate/usd/eur")
data = res.json()การทำงานแบบ Async
ในเว็บแอปแบบอะซิงโครนัส ให้ใช้ httpx:
import httpx
API = "https://api.frankfurter.dev"
async def rate(base, quote):
async with httpx.AsyncClient(base_url=API) as client:
res = await client.get(f"/v2/rate/{base}/{quote}")
res.raise_for_status()
return res.json()["rate"]การล็อกแหล่งข้อมูลทางการ
โดยค่าเริ่มต้นคุณจะได้รับอัตราเฉลี่ยรวมจากทุกแหล่งข้อมูล เพิ่ม providers เพื่อล็อกหน่วยงานที่ต้องการ เช่น อัตราอ้างอิง ECB สำหรับภาษีมูลค่าเพิ่มในสหภาพยุโรป เมื่อกฎหมายกำหนดให้ใช้อัตราที่ประกาศโดยธนาคารกลางของเขตอำนาจศาลนั้น
res = requests.get(
"https://api.frankfurter.dev/v2/rate/usd/eur",
params={"providers": "ecb"},
)
data = res.json()ดูแหล่งข้อมูลทั้งหมด แหล่งข้อมูลที่ล็อกไว้จะอัปเดตตามตารางเวลาประกาศของหน่วยงานนั้นเอง อัตราล่าสุดจึงอาจตามหลังอัตราเฉลี่ยรวมอยู่หนึ่งวัน
ต้องการวิเคราะห์อนุกรมเวลา?
สำหรับช่วงวันที่ การจัดกลุ่มรายเดือน และการสร้างกราฟ สามารถโหลด CSV endpoint เข้าสู่ DataFrame ได้โดยตรง ดูรายละเอียดได้ที่หน้า pandas