GET
/
fee-schedule-results
/
versions
/
{version_id}
Get fee schedule results by version
curl --request GET \
  --url https://api.rulebookcompany.com/api/v1/fee-schedule-results/versions/{version_id} \
  --header 'x-rulebook-api-access-key: <api-key>'
import requests

url = "https://api.rulebookcompany.com/api/v1/fee-schedule-results/versions/{version_id}"

headers = {"x-rulebook-api-access-key": "<api-key>"}

response = requests.get(url, headers=headers)

print(response.text)
const options = {method: 'GET', headers: {'x-rulebook-api-access-key': '<api-key>'}};

fetch('https://api.rulebookcompany.com/api/v1/fee-schedule-results/versions/{version_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));
<?php

$curl = curl_init();

curl_setopt_array($curl, [
CURLOPT_URL => "https://api.rulebookcompany.com/api/v1/fee-schedule-results/versions/{version_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-rulebook-api-access-key: <api-key>"
],
]);

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
package main

import (
"fmt"
"net/http"
"io"
)

func main() {

url := "https://api.rulebookcompany.com/api/v1/fee-schedule-results/versions/{version_id}"

req, _ := http.NewRequest("GET", url, nil)

req.Header.Add("x-rulebook-api-access-key", "<api-key>")

res, _ := http.DefaultClient.Do(req)

defer res.Body.Close()
body, _ := io.ReadAll(res.Body)

fmt.Println(string(body))

}
HttpResponse<String> response = Unirest.get("https://api.rulebookcompany.com/api/v1/fee-schedule-results/versions/{version_id}")
.header("x-rulebook-api-access-key", "<api-key>")
.asString();
require 'uri'
require 'net/http'

url = URI("https://api.rulebookcompany.com/api/v1/fee-schedule-results/versions/{version_id}")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["x-rulebook-api-access-key"] = '<api-key>'

response = http.request(request)
puts response.read_body
{
  "error": {
    "code": "UNAUTHORIZED",
    "message": "Missing or invalid API key."
  },
  "meta": { "query_time_ms": 1 }
}
{
  "error": {
    "code": "FORBIDDEN",
    "message": "You do not have access to this exchange's data."
  },
  "meta": { "query_time_ms": 1 }
}
{
  "error": {
    "code": "NOT_FOUND",
    "message": "Version not found."
  },
  "meta": { "query_time_ms": 1 }
}
{
  "error": {
    "code": "VALIDATION_ERROR",
    "message": "Invalid query parameters.",
    "details": []
  },
  "meta": { "query_time_ms": 1 }
}

Overview

Returns all fee schedule results belonging to a specific extraction version. Each version represents a single extraction run against a fee schedule document. Use this to retrieve the complete set of fees from that version. Results are access-scoped — you can only retrieve versions for exchanges associated with your API key.
Authorization Required - Include your API key in the x-rulebook-api-access-key header. Contact aaron@rulebookcompany.com to obtain access.
You can find version_id values in the response of the List Fee Schedule Results or Get Fee Schedule Result endpoints.

Path Parameters

version_id
string (uuid)
required
Fee extraction version identifier. Obtain this from the version_id field in fee schedule results.

Query Parameters

page_size
integer
default:"20"
Records per page (1–100)
page_number
integer
default:"0"
Page number (0-indexed)
include_footnotes
boolean
default:"false"
When true, includes resolved footnotes from the source document in the relationships field of each result.
include_definitions
boolean
default:"false"
When true, includes resolved definitions from the source document in the relationships field of each result.
include_source
boolean
default:"false"
When true, includes source_document, source_link, and page_number fields in each result.

Request

curl -X GET "https://api.rulebookcompany.com/api/v1/fee-schedule-results/versions/f7e8d9c0-b1a2-3456-7890-abcdef123456" \
  -H "x-rulebook-api-access-key: YOUR_API_KEY"

With Pagination and Source

curl -X GET "https://api.rulebookcompany.com/api/v1/fee-schedule-results/versions/f7e8d9c0-b1a2-3456-7890-abcdef123456?page_size=50&page_number=0&include_source=true" \
  -H "x-rulebook-api-access-key: YOUR_API_KEY"

Response

data
array
Array of fee schedule result objects (same schema as the list endpoint)
meta
object
Pagination and performance metadata

Example Response

{
  "data": [
    {
      "record_id": "a3d76e96-0cad-4ece-9db1-7ad3c743bdf8",
      "exchange_name": "nasdaq",
      "scraped_time": "2026-02-03T05:00:47.409373Z",
      "version_id": "b962c0b1-5d99-4ef6-b3f6-36cb18c08933",
      "fee_type": "option",
      "source_document": "Options 7: Pricing Schedule.html",
      "source_link": "https://d305kadk6uf47m.cloudfront.net/nasdaq/parsed/2026-02-03/4e20f2da680b466a892182fc05efca7124bbaa4e4b5e55d101ed691203824431.pdf",
      "page_number": 8,
      "fee_category": "fees_and_rebates",
      "fee_charge_type": "MARS Payment (Non-Penny)",
      "fee_amount": "$0.81",
      "fee_action": "make",
      "fee_action_details": "Add liquidity",
      "fee_basis": null,
      "fee_participant": "all",
      "fee_participant_details": null,
      "fee_monthly_volume": "Tier 8",
      "fee_monthly_volume_criteria": "125,000 ADV",
      "fee_symbol_classification": "all",
      "fee_symbol_type": "non_penny",
      "fee_trade_type": null,
      "fee_symbol": "{All}",
      "fee_excluded_symbols": "{}",
      "fee_conditions": "Executed Eligible Contracts that add liquidity, routed to NOM through a participating NOM Participant's System and meet the requisite Eligible Contracts ADV",
      "fee_exclusions": "No payment for orders routed to NOM but not executed",
      "fee_notes": null,
      "fee_extra_info": null,
      "relationships": {
        "footnotes": [],
        "definitions": []
      }
    }
  ],
  "meta": {
    "record_count": 169,
    "total_pages": 169,
    "current_page": 0,
    "page_size": 1,
    "query_time_ms": 236
  }
}

Error Responses

{
  "error": {
    "code": "UNAUTHORIZED",
    "message": "Missing or invalid API key."
  },
  "meta": { "query_time_ms": 1 }
}
{
  "error": {
    "code": "FORBIDDEN",
    "message": "You do not have access to this exchange's data."
  },
  "meta": { "query_time_ms": 1 }
}
{
  "error": {
    "code": "NOT_FOUND",
    "message": "Version not found."
  },
  "meta": { "query_time_ms": 1 }
}
{
  "error": {
    "code": "VALIDATION_ERROR",
    "message": "Invalid query parameters.",
    "details": []
  },
  "meta": { "query_time_ms": 1 }
}

Authorizations

x-rulebook-api-access-key
string
header
required

API access key provided by Rulebook Company. Contact aaron@rulebookcompany.com to obtain one.

Path Parameters

version_id
string<uuid>
required

Fee extraction version identifier (from the version_id field in fee schedule results)

Query Parameters

page_size
integer
default:20

Number of records per page (1-100)

Required range: 1 <= x <= 100
page_number
integer
default:0

Page number (0-indexed)

Required range: x >= 0
include_footnotes
boolean
default:false

When true, includes resolved footnotes from the source document in the relationships field of each result

include_definitions
boolean
default:false

When true, includes resolved definitions from the source document in the relationships field of each result

include_source
boolean
default:false

When true, includes source_document, source_link, and page_number fields in each result

Response

Paginated fee schedule results for the specified version

data
object[]
meta
object

Pagination and performance metadata