---
title: "BIN Lookup API C# Guide"
description: "Call the BIN Lookup API from C# with HttpClient. Handle current error codes and send a batch lookup."
section: "Guides"
url: "https://binlookupapi.com/docs/guides/csharp/"
markdown_url: "https://binlookupapi.com/docs/guides/csharp.md"
---
# BIN lookup with C#

This page uses .NET and `HttpClient`. Create an API key in the [quickstart](/docs/quickstart/). Read it from the environment variable `BINLOOKUP_API_KEY`.

## Look up one BIN

```csharp
using System.Net.Http.Headers;
using System.Text;
using System.Text.Json;

using var client = new HttpClient();
var apiKey = Environment.GetEnvironmentVariable("BINLOOKUP_API_KEY");
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", apiKey);

var body = new StringContent(
    JsonSerializer.Serialize(new { number = 42467101 }),
    Encoding.UTF8,
    "application/json"
);

var response = await client.PostAsync("https://api.binlookupapi.com/v1/bin", body);
var payload = await response.Content.ReadAsStringAsync();

switch ((int)response.StatusCode)
{
    case 200:
        Console.WriteLine(payload);
        Console.WriteLine(response.Headers.GetValues("X-Quota-Remaining").FirstOrDefault());
        break;
    case 401:
        Console.Error.WriteLine("The API key is missing or not valid.");
        break;
    case 403:
        Console.Error.WriteLine(payload);
        break;
    case 404:
        Console.Error.WriteLine("The BIN is not in the data.");
        break;
    case 429:
        Console.Error.WriteLine("The daily quota is used.");
        break;
    case 400:
        Console.Error.WriteLine(payload);
        break;
    default:
        Console.Error.WriteLine($"The API returned HTTP {(int)response.StatusCode}.");
        break;
}
```

Parse `data` from the JSON. The fields are in the [API reference](/docs/api-reference/#response-fields). On BLAPI-150KPM and above, the body also contains `meta.longer_bin_available`.

HTTP 403 is `FORBIDDEN` or `FEATURE_NOT_AVAILABLE`. Read the `error` property.

## Look up many BINs

`POST /v1/bins` accepts 1 to 2,000 values. It requires BLAPI-500KPM, or a test-mode organisation. Each value uses one lookup.

```csharp
var body = new StringContent(
    JsonSerializer.Serialize(new { numbers = new object[] { 400062, "400597", 99999999 } }),
    Encoding.UTF8,
    "application/json"
);

var response = await client.PostAsync("https://api.binlookupapi.com/v1/bins", body);
var payload = await response.Content.ReadAsStringAsync();

if ((int)response.StatusCode == 403 && payload.Contains("FEATURE_NOT_AVAILABLE"))
{
    Console.Error.WriteLine("Batch lookup needs the BLAPI-500KPM plan.");
}
else if (response.IsSuccessStatusCode)
{
    Console.WriteLine(payload);
}
```

The `results` array keeps your order. See [Batch lookups](/docs/batch-lookups/). A batch that does not fit in the remaining quota returns 429 and uses no quota.

## Related pages

- [Java guide](/docs/guides/java/)
- [Go guide](/docs/guides/go/)
- [API reference](/docs/api-reference/)
- [API keys](/docs/api-keys/)
- [Billing](/docs/subscriptions/)
