Federal firearms licenses (FFLs)
Use BFG's FFL APIs to list, retrieve, and manage Federal Firearms Licenses (FFLs).
These endpoints support filtering, pagination, detailed record access, import history, and downloads of federal firearms licenses (FFLs).
List FFLs
Use this endpoint to retrieve a list of FFLs with optional filters, sorting, and pagination.
Endpoint: GET /api/ffls
Query parameters
| Parameter | Required | Description |
|---|---|---|
sort | No | Sorts by the specified field. |
page_size | No | Sets the number of results per page. |
page | No | Sets the page number. |
filter[business_license_name] | No | Filters FFLs by business license name. |
filter[trashed] | No | Includes trashed FFLs. Values: with, only, or without. |
Example request
curl --request GET \
--get "https://api-sandbox.buyingfreedom.app/api/ffls?sort=-ffl_number&page_size=20&page=2&filter%5Bbusiness_license_name%5D=214763028Z00020&filter%5Btrashed%5D=with" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"Example response
{
"data": [
{
"id": 1,
"ffl_number": "214763028Z00020",
"short_ffl_number": "214Z0020",
"ffl_region": "Northwest",
"ffl_irs_district": "Nevada",
"ffl_fips": "763",
"ffl_type": "Dealer of Title I firearms",
"ffl_expiration": "May 2027",
"license_name": "Acme Tactical Supplies LLC",
"business_name": "",
"premise_address": "5011 Echo Hollow Dr",
"premise_city": "Springfield",
"premise_state": "OR",
"premise_zipcode": "97477",
"mailing_street": "PO Box 202",
"mailing_city": "Springfield",
"mailing_state": "OR",
"mailing_zipcode": "97478",
"phone": "5415550199",
"loa_issue_date": "2012-05-10",
"loa_expiration_date": "2012-11-09",
"created_at": "2025-03-14T04:30:07.000000Z",
"updated_at": "2025-03-14T04:30:07.000000Z"
},
{
"id": 2,
"ffl_number": "214840045G00112",
"short_ffl_number": "214G0011",
"ffl_region": "Northwest",
"ffl_irs_district": "Nevada",
"ffl_fips": "840",
"ffl_type": "Pawnbroker dealing in Title I firearms",
"ffl_expiration": "July 2027",
"license_name": "Holloway Arms Co.",
"business_name": "Holloway Pawn & Firearms",
"premise_address": "1800 Marshall Ave",
"premise_city": "Eugene",
"premise_state": "OR",
"premise_zipcode": "97401",
"mailing_street": "1800 Marshall Ave",
"mailing_city": "Eugene",
"mailing_state": "OR",
"mailing_zipcode": "97401",
"phone": "5415551098",
"loa_issue_date": null,
"loa_expiration_date": null,
"created_at": "2025-03-14T04:30:07.000000Z",
"updated_at": "2025-03-14T04:30:07.000000Z"
}
],
"links": {
"first": "https://api-sandbox.buyingfreedom.app/api/ffls?page=1",
"last": "https://api-sandbox.buyingfreedom.app/api/ffls?page=7645",
"prev": null,
"next": "https://api-sandbox.buyingfreedom.app/api/ffls?page=2"
},
"meta": {
"current_page": 1,
"from": 1,
"last_page": 7645,
"links": [
{
"url": null,
"label": "« Previous",
"active": false
},
{
"url": "https://api-sandbox.buyingfreedom.app/api/ffls?page=1",
"label": "1",
"active": true
},
{
"url": "https://api-sandbox.buyingfreedom.app/api/ffls?page=2",
"label": "2",
"active": false
},
{
"url": null,
"label": "Next »",
"active": false
}
],
"path": "https://api-sandbox.buyingfreedom.app/api/ffls",
"per_page": 10,
"to": 2,
"total": 76443
}
}Retrieve an FFL by ID
Use this endpoint to fetch a single FFL using its unique ID.
Endpoint: GET /api/ffls/{ffl_id}
URL parameters
ffl_id: Required. The FFL's unique identifier.
Example request
curl --request GET \
--get "https://api-sandbox.buyingfreedom.app/api/ffls/17" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"Example response
{
"data": {
"id": 98213,
"ffl_number": "287190094R00158",
"short_ffl_number": "287R0015",
"ffl_region": "Midwest",
"ffl_irs_district": "Wyoming",
"ffl_fips": "190",
"ffl_type": "Importer/Dealer of Title I firearms",
"ffl_expiration": "December 2026",
"ffl_id": "00158",
"license_name": "JACOBS ERIKA LOUISE B",
"business_name": "Silver Range Armory LLC",
"premise_address": "2947 Lincoln Heights Rd",
"premise_city": "Cheyenne",
"premise_state": "WY",
"premise_zipcode": "82009",
"mailing_street": "2947 Lincoln Heights Rd",
"mailing_city": "Cheyenne",
"mailing_state": "WY",
"mailing_zipcode": "82009",
"phone": "3075551289",
"website": null,
"email": null,
"loa_issue_date": "2015-08-22",
"loa_expiration_date": "2016-02-21",
"files": [],
"created_at": "2025-03-27T14:31:54.000000Z",
"updated_at": "2025-03-27T14:31:54.000000Z"
}
}Retrieve an FFL by license number
Use this endpoint to retrieve an FFL by its license number.
Endpoint: GET /api/ffls/number/{fflNumber}
URL parameters
fflNumber: Required. The full license number.
Example request
curl --request GET \
--get "https://api-sandbox.buyingfreedom.app/api/ffls/number/289120093K00245" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"Example response
{
"data": {
"id": 84523,
"ffl_number": "289120093K00245",
"short_ffl_number": "289K0024",
"ffl_region": "Midwest",
"ffl_irs_district": "Nebraska",
"ffl_fips": "120",
"ffl_type": "Dealer or Gunsmith of Title I firearms",
"ffl_expiration": "November 2026",
"ffl_id": "00245",
"license_name": "TURNER CLAYTON M",
"business_name": "Midwest Tactical Outfitters LLC",
"premise_address": "1479 Ashland Parkway",
"premise_city": "Papillion",
"premise_state": "NE",
"premise_zipcode": "68133",
"mailing_street": "1479 Ashland Parkway",
"mailing_city": "Papillion",
"mailing_state": "NE",
"mailing_zipcode": "68133",
"phone": "4025551234",
"website": null,
"email": null,
"loa_issue_date": "2019-04-05",
"loa_expiration_date": "2024-04-05",
"files": [],
"created_at": "2025-03-27T14:31:54.000000Z",
"updated_at": "2025-03-27T14:31:54.000000Z"
}
}View FFL import history
This endpoint returns a history of FFL imports.
Endpoint: GET /api/ffls/import/histories
Query parameters
page_size: Optional. Set the number of results per page.page: Optional. Set the page number.
Example request
curl --request GET \
--get "https://api-sandbox.buyingfreedom.app/api/ffls/import/histories?page_size=20&page=2" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"Example response
{
"data": [
{
"id": 47,
"ran_at": "2025-03-28T10:42:17.000000Z",
"added_count": 85,
"updated_count": 14
}
],
"links": {
"first": "https://atlas-api.example.com/api/ffls/import/histories?page_size=10&page=1",
"last": "https://atlas-api.example.com/api/ffls/import/histories?page_size=10&page=5",
"prev": "https://atlas-api.example.com/api/ffls/import/histories?page_size=10&page=1",
"next": "https://atlas-api.example.com/api/ffls/import/histories?page_size=10&page=3"
},
"meta": {
"current_page": 2,
"from": 11,
"last_page": 5,
"links": [
{
"url": "https://atlas-api.example.com/api/ffls/import/histories?page_size=10&page=1",
"label": "« Previous",
"active": false
},
{
"url": "https://atlas-api.example.com/api/ffls/import/histories?page_size=10&page=2",
"label": "2",
"active": true
},
{
"url": "https://atlas-api.example.com/api/ffls/import/histories?page_size=10&page=3",
"label": "Next »",
"active": false
}
],
"path": "https://atlas-api.example.com/api/ffls/import/histories",
"per_page": 10,
"to": 20,
"total": 47
}
}Download FFL files
Use this endpoint to download all files associated with the specified FFL as a zip archive.
Endpoint: GET api/ffls/download-files/{ffl_id}
URL parameters
ffl_id: Required. The ID of the FFL.
Example request
curl --request GET \
--get "https://api-sandbox.buyingfreedom.app/api/ffls/download-files/872" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"Example response
A binary zip file download is started. The zip archive has the naming convention {ffl_number}-ffl-files.zip.
Updated 3 months ago