POST
/
api
/
v1
/
suppliers
/
data
Get Supplier Data
curl --request POST \
  --url https://api.example.com/api/v1/suppliers/data \
  --header 'Content-Type: application/json' \
  --data '
{
  "supplier_name": "<string>",
  "fee_type": "<string>",
  "fee_category": "<string>",
  "action": "<string>",
  "participant": "<string>",
  "start_date": "<string>",
  "end_date": "<string>",
  "offset": 123,
  "limit": 123
}
'
{
  "error": "Bad Request",
  "message": "Invalid parameter value",
  "details": {
    "field": "fee_type",
    "provided": "invalid_type",
    "allowed": ["option", "equity"]
  }
}

Overview

This endpoint retrieves detailed supplier data based on customizable parameters including supplier name, fee type, fee category, action type, and participant type. Maximum 100 records per request.
Authorization Required - You must include a valid Bearer token in the Authorization header. Contact sales@rulebook.company to obtain API access.
Pagination Required - This endpoint returns a maximum of 100 records per request. Use the offset and limit parameters to paginate through results. The difference between offset and limit cannot exceed 100.

Request Body

supplier_name
string
required
Name or code of the supplier (e.g., NYSE, NASDAQ, CBOE)
fee_type
string
required
Type of fee to retrieve
  • option - Options trading fees
  • equity - Equity trading fees
fee_category
string
required
Category of fees to retrieve
  • Fee And Rebates
  • Legal Regulatory Fees
  • Market Data Fees
  • Participant Fee
  • Port Fees And Other Services
action
string
required
Trading action type
  • Make - Liquidity providing orders
  • Take - Liquidity taking orders
  • Open - Opening transactions
  • Routed & Other - Routed orders and other actions
participant
string
required
Participant type for the data
  • All - All participant types
  • Away Market Maker - Market makers from other exchanges
  • Market Maker - Exchange market makers
  • Broker Dealer - Broker-dealer firms
  • Customer - Retail and institutional customers
  • Firm - Proprietary trading firms
  • Professional & Other - Professional traders and other categories
start_date
string
Start date for data retrieval (ISO 8601 format: YYYY-MM-DD)
end_date
string
End date for data retrieval (ISO 8601 format: YYYY-MM-DD)
offset
integer
default:"0"
required
Starting record position (0-indexed). Use this to skip records and implement pagination.Example:
  • offset: 0 starts from the first record
  • offset: 100 starts from the 101st record
  • offset: 200 starts from the 201st record
limit
integer
default:"100"
required
Number of records to retrieve. Maximum value: 100Validation: (offset + limit) range cannot exceed 100 records per request.Example:
  • offset: 0, limit: 100 ✅ Returns records 1-100
  • offset: 100, limit: 100 ✅ Returns records 101-200
  • offset: 50, limit: 100 ❌ Invalid (range = 150 records)
  • offset: 0, limit: 150 ❌ Invalid (limit exceeds 100)

Request Example

curl -X POST https://api.rulebook.company/v1/suppliers/data \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "supplier_name": "NYSE",
    "fee_type": "equity",
    "fee_category": "Fee And Rebates",
    "action": "Make",
    "participant": "Market Maker",
    "start_date": "2024-01-01",
    "end_date": "2024-12-31",
    "offset": 0,
    "limit": 100
  }'

Pagination Examples

Get first 100 records:
{
  "offset": 0,
  "limit": 100
}
Get next 100 records (101-200):
{
  "offset": 100,
  "limit": 100
}
Get records 201-300:
{
  "offset": 200,
  "limit": 100
}

Response

success
boolean
Indicates if the request was successful
data
object
Container for the response data

Example Response

{
  "success": true,
  "data": {
    "supplier": "NYSE",
    "fee_type": "equity",
    "fee_category": "Fee And Rebates",
    "action": "Make",
    "participant": "Market Maker",
    "date_range": {
      "start": "2024-01-01T00:00:00Z",
      "end": "2024-12-31T23:59:59Z"
    },
    "records": [
      {
        "date": "2024-01-01",
        "fee_amount": 0.0015,
        "rebate_amount": 0.0020,
        "volume": 150000,
        "description": "Market maker rebate for providing liquidity"
      },
      {
        "date": "2024-01-02",
        "fee_amount": 0.0015,
        "rebate_amount": 0.0020,
        "volume": 175000,
        "description": "Market maker rebate for providing liquidity"
      }
    ],
    "total_records": 365,
    "returned_records": 100,
    "pagination": {
      "offset": 0,
      "limit": 100,
      "has_more": true,
      "next_offset": 100
    },
    "summary": {
      "total_fees": 547.50,
      "total_rebates": 730.00,
      "net_amount": 182.50,
      "total_volume": 54750000
    }
  }
}

Parameter Combinations

  • option: Options trading fees and rebates
  • equity: Equity trading fees and rebates
  • Fee And Rebates: Standard trading fees and liquidity rebates
  • Legal Regulatory Fees: SEC fees, FINRA fees, and other regulatory charges
  • Market Data Fees: Real-time and delayed market data subscription fees
  • Participant Fee: Membership and participation fees
  • Port Fees And Other Services: Connection fees, ports, and additional services
  • Make: Orders that add liquidity to the order book
  • Take: Orders that remove liquidity from the order book
  • Open: Opening auction transactions
  • Routed & Other: Orders routed to other venues and miscellaneous actions
  • All: Aggregated data across all participant types
  • Away Market Maker: Market makers from other exchanges
  • Market Maker: Exchange-designated market makers
  • Broker Dealer: Registered broker-dealer firms
  • Customer: Retail and institutional customers
  • Firm: Proprietary trading firms
  • Professional & Other: Professional traders and other categories

Error Responses

{
  "error": "Bad Request",
  "message": "Invalid parameter value",
  "details": {
    "field": "fee_type",
    "provided": "invalid_type",
    "allowed": ["option", "equity"]
  }
}

Usage Tips

1

Get Total Count

Use the Get Record Count endpoint to see how many records match your filters
2

Calculate Pages

Divide total count by 100 to determine how many requests you’ll needExample: 365 records = 4 requests (100 + 100 + 100 + 65)
3

Fetch Data in Batches

Make multiple requests with different offset values:
  • Request 1: offset: 0, limit: 100
  • Request 2: offset: 100, limit: 100
  • Request 3: offset: 200, limit: 100
  • Request 4: offset: 300, limit: 100
Use the Check Available Date Ranges endpoint first to ensure data is available for your requested time period.
Pagination Limits:
  • Maximum 100 records per request
  • limit parameter cannot exceed 100
  • The range (offset + limit) cannot exceed 100