A SWIFT code lookup API checks an 8- or 11-character BIC and returns the bank name, city, and country as JSON. On BankDataStack that is POST https://www.bankdatastack.com/api/v1/swift/validate with header X-API-Key. Official sample: CHASUS33.
Starter is $49.99/mo (1,000 calls, then $0.002) with a 7-day trial. This is not ABA routing and not IBAN. Docs: bankdatastack.com/docs.
Request: official CHASUS33
curl -X POST "https://www.bankdatastack.com/api/v1/swift/validate" \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"swift":"CHASUS33"}'
Response: official validate sample
{
"status": "success",
"message": "SWIFT code CHASUS33 is valid",
"data": {
"swiftCode": "CHASUS33",
"bank": "JPMORGAN CHASE BANK, N.A.",
"city": "NEW YORK",
"branch": "HEAD OFFICE",
"address": "1 CHASE MANHATTAN PLAZA",
"postCode": "10005",
"country": "United States",
"countryCode": "US",
"breakdown": {
"swiftCode": "CHASUS33",
"bankCode": "CHAS",
"countryCode": "US",
"locationCode": "33",
"codeStatus": "Active",
"branchCode": null
}
}
}
PHP: official header
$ch = curl_init('https://www.bankdatastack.com/api/v1/swift/validate');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'X-API-Key: YOUR_API_KEY',
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode(['swift' => 'CHASUS33']),
]);
$json = json_decode(curl_exec($ch), true);
curl_close($ch);
$bank = $json['data']['bank'] ?? null;
Go live
1. Register — 7-day trial.
2. Copy X-API-Key.
3. POST {"swift":"CHASUS33"}.
4. Store data.bank and data.countryCode.




