มีคำถามหรือพบปัญหา? โพสต์ได้ที่ GitHub Discussions

ไม่จำเป็นต้องติดตั้ง SDK เพราะ fetch มีมาให้ในตัวอยู่แล้วทั้งบนเบราว์เซอร์, Node, Deno, Bun และ edge runtime อีกทั้งเปิด CORS ไว้และไม่มี API key ที่ต้องกังวลว่าจะรั่วไหล จึงเรียกใช้งาน API จากโค้ดฝั่งไคลเอนต์ได้โดยตรง

เริ่มต้นอย่างรวดเร็ว

ดึงอัตราแลกเปลี่ยนและคำนวณยอดเงิน:

const res = await fetch("https://api.frankfurter.dev/v2/rate/usd/eur");
const data = await res.json();
const total = 100 * data.rate;

ผลลัพธ์ที่ได้เป็นออบเจกต์ชั้นเดียว: {"date": "2026-07-17", "base": "USD", "quote": "EUR", "rate": 0.8739} เนื่องจาก fetch ไม่โยนข้อผิดพลาดเมื่อเกิดสถานะผิดพลาดทาง HTTP จึงควรตรวจสอบ res.ok เสมอ หากรหัสสกุลเงินไม่ถูกต้อง API จะส่งคืนสถานะ 422 พร้อมข้อความ JSON

การจัดรูปแบบด้วย Intl

ไม่ต้องต่อสตริงใส่สัญลักษณ์สกุลเงินเอง เพราะ Intl.NumberFormat รู้จักสัญลักษณ์ ตำแหน่งการวาง และจำนวนทศนิยมของทุกสกุลเงินในทุกภาษา:

const res = await fetch("https://api.frankfurter.dev/v2/rate/usd/eur");
const { rate } = await res.json();

const eur = new Intl.NumberFormat("en", {
  style: "currency",
  currency: "EUR",
});
eur.format(100 * rate); // "€87.39"

สัญลักษณ์และตำแหน่งทศนิยม

ไม่จำเป็นต้องเก็บตารางข้อมูลหน่วยย่อยหรือสัญลักษณ์สกุลเงินไว้ในโปรเจกต์เอง สามารถอ่านค่าจากตัวจัดรูปแบบได้โดยตรง:

const yen = new Intl.NumberFormat("en", {
  style: "currency",
  currency: "JPY",
});

yen.resolvedOptions().maximumFractionDigits; // 0, the yen has no subunits
yen.formatToParts(1).find((part) => part.type === "currency").value; // "¥"

ดูสกุลเงินทั้งหมดที่ Frankfurter รองรับพร้อมรหัสและสัญลักษณ์

ดึงหลายสกุลเงินพร้อมกัน

/v2/rates ส่งคืนอาร์เรย์ชั้นเดียวที่มีหนึ่งแถวต่อหนึ่งสกุลเงินปลายทาง แปลงเป็นออบเจกต์สำหรับค้นหาค่าด้วย Object.fromEntries หากไม่ระบุ quotes จะได้รับข้อมูลทุกสกุลเงิน

const api = "https://api.frankfurter.dev";
const res = await fetch(`${api}/v2/rates?base=usd&quotes=eur,gbp,jpy`);
const rows = await res.json();

const rates = Object.fromEntries(rows.map((row) => [row.quote, row.rate]));
// { EUR: 0.8739, GBP: 0.74388, JPY: 162.33 }

การล็อกแหล่งข้อมูลทางการ

โดยค่าเริ่มต้นคุณจะได้รับอัตราเฉลี่ยรวมจากทุกแหล่งข้อมูล เพิ่ม providers เพื่อล็อกหน่วยงานที่ต้องการ เช่น อัตราอ้างอิง ECB สำหรับภาษีมูลค่าเพิ่มในสหภาพยุโรป เมื่อกฎหมายกำหนดให้ใช้อัตราที่ประกาศโดยธนาคารกลางของเขตอำนาจศาลนั้น

const api = "https://api.frankfurter.dev";
const res = await fetch(`${api}/v2/rate/usd/eur?providers=ecb`);

ดูแหล่งข้อมูลทั้งหมด แหล่งข้อมูลที่ล็อกไว้จะอัปเดตตามตารางเวลาประกาศของหน่วยงานนั้นเอง อัตราล่าสุดจึงอาจตามหลังอัตราเฉลี่ยรวมอยู่หนึ่งวัน

ทดลองใช้งานจริง

ทดลองสร้างคิวรีและดูผลลัพธ์ได้ทันทีบนเบราว์เซอร์ที่หน้า Playground