Discover/Total Apex API
live

Total Apex APItotalapex.com

Retrieve PDF documents, model numbers, manufacturers, and equipment types from the Total Apex beverage equipment document library via a single filterable endpoint.

This API takes change requests — .
Endpoints
1
Updated
3d ago

What is the Total Apex API?

The Total Apex Document Library API exposes a single list_documents endpoint that covers 7,847 PDF documents across 393 pages of beverage and refrigeration equipment records. Each result includes a direct PDF URL, document name, model number, manufacturer name, and equipment type. You can filter by keyword, manufacturer, document type, and equipment category to narrow results to exactly what you need.

This call costs5 credits / call— charged only on success
Try it
Page number for pagination (1-indexed). Ignored when fetch_all is true.
Number of results per page. Ignored when fetch_all is true (uses 100 internally for efficiency).
Search keyword to filter documents by name or content.
When true, automatically paginates through all pages and returns every matching document in a single response. When false, returns a single page of results.
Filter by manufacturer. Accepts exactly one of: Ice-O-Matic, Lancer, Crysalli, FBD, Cornelius, Solventum | 3M, Aquamor, BUNN, DISPENSE-RITE, Flojet, Multiplex, Glastender, Accuflex, LogiCO2, Procon, Taprite, Pentair Shurflo, Watts, Wunder-Bar, Cambro, Grindmaster/Crathco, Thonhauser USA Inc., Elmeco, Gardner Denver Thomas, ICI, Kinetico, McDantim, Nordic, John Guest, UBC Group, Westover Scientific, Wilbur Curtis, Draftec, Ecolab, Kay Chemical, Nu-Calgon, Sunburst, Nexel Racks, CM Becker, Manitowoc, Ugolini, Armaflex, Aether, Everpure, Embraco, Fluid-O-Tech, Haynes Mfg, Imbera, Marathon Electric, Oetiker, Progeral, Rapak, Regal Beloit, Starline, Sterling Pressure Systems, Tecumseh, Tomlinson, Tru-Gap, Wago, Ashcroft/Dresser, Bevex, Newton CFV, Loctite, Pentair Everpure, Schaerer, Crathco, SENCO, California Air Tools, True Manufacturing.
Filter by document type. Accepts exactly one of: Other, Specifications, Manuals, Parts List, Manuales, MSDS and Testing Results, MSDS, Service Bulletins, Documentos Adicionales.
Filter by equipment type. Accepts exactly one of: Ice Products, Beverage Equipment, Videos, Refrigeration Equipment, Food Display & Merchandising Equipment, Food Preparation Equipment.
api.parse.bot/scraper/fe8b4be0-09b9-4a8f-b116-b1120c5ce6d5/<endpoint>
Ready to send
Fill in the parameters and hit sign in to send to see live response data here.
Call it over HTTPgrab a free API key at signup
curl -X GET 'https://api.parse.bot/scraper/fe8b4be0-09b9-4a8f-b116-b1120c5ce6d5/list_documents?fetch_all=true&manufacturer=Ice-O-Matic&document_type=Manuals' \
  -H 'X-API-Key: $PARSE_API_KEY'
Python SDK · recommended

Typed, relational, agent-ready

A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.

  • Fully typed · autocompletes
  • Objects link to objects
  • Typed errors & pagination

Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:

uv add parse-sdk
uv run parse init
uv run parse add --marketplace totalapex-com-api

uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.

"""
Total Apex Document Library API Client
Get your API key from: https://parse.bot/settings
"""

import os
import requests
from typing import Optional, Dict, Any


class ParseClient:
    """Client for the Total Apex Document Library API."""
    
    def __init__(self, api_key: Optional[str] = None):
        """Initialize the Parse API client.
        
        Args:
            api_key: API key for authentication. If not provided, reads from PARSE_API_KEY env var.
        """
        self.base_url = "https://api.parse.bot"
        self.scraper_id = "fe8b4be0-09b9-4a8f-b116-b1120c5ce6d5"
        self.api_key = api_key or os.getenv("PARSE_API_KEY")
        
        if not self.api_key:
            raise ValueError("API key must be provided or set in PARSE_API_KEY environment variable")
    
    def _call(self, endpoint: str, method: str = "POST", **params) -> Dict[str, Any]:
        """Make an API call to the Parse Bot API.
        
        Args:
            endpoint: The API endpoint name
            method: HTTP method (GET or POST)
            **params: Query/body parameters
            
        Returns:
            Response JSON as dictionary
        """
        url = f"{self.base_url}/scraper/{self.scraper_id}/{endpoint}"
        headers = {
            "X-API-Key": self.api_key,
            "Content-Type": "application/json"
        }
        
        if method == "GET":
            response = requests.get(url, headers=headers, params=params)
        elif method == "POST":
            response = requests.post(url, headers=headers, json=params)
        else:
            raise ValueError(f"Unsupported HTTP method: {method}")
        
        response.raise_for_status()
        return response.json()
    
    def list_documents(
        self,
        page: int = 1,
        keyword: Optional[str] = None,
        manufacturer: Optional[str] = None,
        equipment_type: Optional[str] = None,
        document_type: Optional[str] = None,
        limit: int = 20
    ) -> Dict[str, Any]:
        """List documents from the Total Apex Document Library.
        
        Args:
            page: Page number for pagination (1-indexed)
            keyword: Search keyword to filter documents
            manufacturer: Filter by manufacturer name
            equipment_type: Filter by equipment type
            document_type: Filter by document type
            limit: Number of results per page
            
        Returns:
            Dictionary containing documents list and pagination info
        """
        params = {
            "page": page,
            "limit": limit
        }
        
        if keyword:
            params["keyword"] = keyword
        if manufacturer:
            params["manufacturer"] = manufacturer
        if equipment_type:
            params["equipment_type"] = equipment_type
        if document_type:
            params["document_type"] = document_type
        
        return self._call("list_documents", method="GET", **params)


def main():
    """Practical workflow example for the Total Apex Document Library API."""
    
    # Initialize the client
    client = ParseClient()
    
    print("=" * 80)
    print("Total Apex Document Library - Practical Usage Example")
    print("=" * 80)
    
    # Workflow 1: Search for Ice-O-Matic ice machine manuals
    print("\n[WORKFLOW 1] Searching for Ice-O-Matic ice machine manuals...")
    print("-" * 80)
    
    results = client.list_documents(
        manufacturer="Ice-O-Matic",
        equipment_type="Ice Products",
        document_type="Manuals",
        limit=5
    )
    
    print(f"Found {results['total_items']} total documents matching criteria")
    print(f"Showing {results['items_on_page']} documents from page {results['page']} of {results['total_pages']}")
    print()
    
    # Process and display the documents
    for idx, doc in enumerate(results['documents'], 1):
        print(f"Document {idx}:")
        print(f"  Name: {doc['document_name']}")
        print(f"  Model: {doc.get('model', 'N/A')}")
        print(f"  Manufacturer: {doc.get('manufacturer', 'N/A')}")
        print(f"  Equipment Type: {doc.get('equipment_type', 'N/A')}")
        print(f"  PDF URL: {doc['pdf_url'][:60]}...")
        print()
    
    # Workflow 2: Search by keyword for beverage equipment
    print("\n[WORKFLOW 2] Searching for beverage dispensers specifications...")
    print("-" * 80)
    
    results = client.list_documents(
        keyword="dispenser",
        equipment_type="Beverage Equipment",
        document_type="Specifications",
        limit=3
    )
    
    print(f"Found {results['total_items']} documents with keyword 'dispenser'")
    print(f"Showing {results['items_on_page']} documents\n")
    
    for idx, doc in enumerate(results['documents'], 1):
        print(f"Specification Document {idx}:")
        print(f"  Name: {doc['document_name']}")
        print(f"  Model: {doc.get('model', 'N/A')}")
        print(f"  Manufacturer: {doc.get('manufacturer', 'N/A')}")
        print()
    
    # Workflow 3: Collect documents from multiple pages for a specific manufacturer
    print("\n[WORKFLOW 3] Collecting Lancer beverage equipment across pages...")
    print("-" * 80)
    
    all_documents = []
    pages_to_check = 2
    
    for page_num in range(1, pages_to_check + 1):
        print(f"Fetching page {page_num}...")
        results = client.list_documents(
            manufacturer="Lancer",
            equipment_type="Beverage Equipment",
            page=page_num,
            limit=10
        )
        
        all_documents.extend(results['documents'])
        print(f"  Retrieved {results['items_on_page']} documents")
        
        if page_num >= results['total_pages']:
            print(f"Reached end of results (page {results['total_pages']})")
            break
    
    print(f"\nTotal documents collected: {len(all_documents)}")
    print("Documents by type:")
    equipment_types = {}
    for doc in all_documents:
        eq_type = doc.get('equipment_type', 'Unknown')
        equipment_types[eq_type] = equipment_types.get(eq_type, 0) + 1
    
    for eq_type, count in equipment_types.items():
        print(f"  {eq_type}: {count}")
    
    # Workflow 4: Search for refrigeration equipment parts lists
    print("\n[WORKFLOW 4] Searching for refrigeration equipment parts lists...")
    print("-" * 80)
    
    results = client.list_documents(
        equipment_type="Refrigeration Equipment",
        document_type="Parts List",
        limit=5
    )
    
    print(f"Found {results['total_items']} parts list documents")
    print(f"Total pages available: {results['total_pages']}")
    
    if results['documents']:
        print("\nSample documents:")
        manufacturers = set()
        for doc in results['documents'][:3]:
            manufacturer = doc.get('manufacturer', 'Unknown')
            manufacturers.add(manufacturer)
            print(f"  - {doc['document_name']} ({doc.get('model', 'N/A')})")
        
        print(f"\nManufacturers represented: {', '.join(sorted(manufacturers))}")
    
    print("\n" + "=" * 80)
    print("Workflow demonstration complete!")
    print("=" * 80)


if __name__ == "__main__":
    main()
All endpoints · 1 totalmissing one? ·

List documents from the Total Apex Document Library with pagination. Returns document PDF URLs, model numbers, manufacturer names, and equipment types. Supports filtering by keyword, manufacturer, equipment type, and document type. Set fetch_all to true to automatically paginate through all pages and return every matching document in a single response.

Input
ParamTypeDescription
pageintegerPage number for pagination (1-indexed). Ignored when fetch_all is true.
limitintegerNumber of results per page. Ignored when fetch_all is true (uses 100 internally for efficiency).
keywordstringSearch keyword to filter documents by name or content.
fetch_allbooleanWhen true, automatically paginates through all pages and returns every matching document in a single response. When false, returns a single page of results.
manufacturerstringFilter by manufacturer. Accepts exactly one of: Ice-O-Matic, Lancer, Crysalli, FBD, Cornelius, Solventum | 3M, Aquamor, BUNN, DISPENSE-RITE, Flojet, Multiplex, Glastender, Accuflex, LogiCO2, Procon, Taprite, Pentair Shurflo, Watts, Wunder-Bar, Cambro, Grindmaster/Crathco, Thonhauser USA Inc., Elmeco, Gardner Denver Thomas, ICI, Kinetico, McDantim, Nordic, John Guest, UBC Group, Westover Scientific, Wilbur Curtis, Draftec, Ecolab, Kay Chemical, Nu-Calgon, Sunburst, Nexel Racks, CM Becker, Manitowoc, Ugolini, Armaflex, Aether, Everpure, Embraco, Fluid-O-Tech, Haynes Mfg, Imbera, Marathon Electric, Oetiker, Progeral, Rapak, Regal Beloit, Starline, Sterling Pressure Systems, Tecumseh, Tomlinson, Tru-Gap, Wago, Ashcroft/Dresser, Bevex, Newton CFV, Loctite, Pentair Everpure, Schaerer, Crathco, SENCO, California Air Tools, True Manufacturing.
document_typestringFilter by document type. Accepts exactly one of: Other, Specifications, Manuals, Parts List, Manuales, MSDS and Testing Results, MSDS, Service Bulletins, Documentos Adicionales.
equipment_typestringFilter by equipment type. Accepts exactly one of: Ice Products, Beverage Equipment, Videos, Refrigeration Equipment, Food Display & Merchandising Equipment, Food Preparation Equipment.
Response
{
  "type": "object",
  "fields": {
    "page": "integer, current page number (1 when fetch_all is true)",
    "documents": "array of document objects with pdf_url, document_name, model, manufacturer, equipment_type",
    "total_items": "integer, total number of matching documents",
    "total_pages": "integer, total number of pages available",
    "items_on_page": "integer, number of documents returned in this response"
  },
  "sample": {
    "data": {
      "page": 1,
      "documents": [
        {
          "model": "85-2308C-110",
          "pdf_url": "https://www.totalapex.com/media/amasty/amfile/attach/zKD5Ty9BNlGfDuj2cBUK5ktkLl4f9RQ2.pdf",
          "manufacturer": "Lancer",
          "document_name": "BEV_DropIn_SS_071816",
          "equipment_type": "Beverage Equipment,Videos"
        }
      ],
      "total_items": 294,
      "total_pages": 3,
      "items_on_page": 294
    },
    "status": "success"
  }
}

About the Total Apex API

What the API Returns

The list_documents endpoint returns paginated records from the Total Apex beverage equipment document library. Each document object in the documents array includes pdf_url (a direct link to the PDF), document_name, model, manufacturer, and equipment_type. The response also surfaces pagination metadata: page, total_items, total_pages, and items_on_page.

Filtering and Pagination

The endpoint accepts four optional filter parameters. manufacturer accepts specific values including Ice-O-Matic, Lancer, Crysalli, FBD, Cornelius, and Solventum | 3M. document_type accepts values such as Specifications, Manuals, Parts List, Manuales, MSDS, and Other. equipment_type covers categories like Ice Products, Beverage Equipment, Refrigeration Equipment, and Videos. A free-text keyword parameter filters by document name or content. Pagination is controlled by page (1-indexed) and limit parameters.

Coverage Scope

The library covers technical documentation for commercial beverage and refrigeration equipment — primarily spec sheets, service manuals, parts lists, and safety data sheets. The fixed set of supported manufacturers reflects Total Apex's distribution portfolio, so the filter accepts only those exact strings. With nearly 8,000 documents available, systematic traversal using page and limit gives full library coverage.

Reliability & maintenance

The Total Apex API is a managed, monitored endpoint for totalapex.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when totalapex.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.

This isn't an official totalapex.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.

Will this API break when the source site changes?+
It's built not to. Every endpoint is health-checked on a schedule with automated test probes. When the source site changes and a check fails, the API is automatically queued for repair and re-verified — that's the self-healing layer. Each API page shows when its endpoints were last verified. And because marketplace APIs are shared, any fix reaches everyone using it.
Is this an official API from the source site?+
No — Parse APIs are independent, managed REST wrappers over publicly available data. That is the point: where a site has no official API (or only a limited one), Parse gives you a maintained, monitored endpoint for that data and keeps it working as the site changes — so you get a stable contract over a source that never promised one.
Can I fix or extend this API myself if I need a new endpoint or field?+
Yes — and you don't have to wait on us. This API was generated by the Parse agent, which stays attached. Describe the change in plain English ("add an endpoint that returns reviews", "fix the price field") in the revise box on the API page or via the revise_api MCP tool, and the agent rebuilds it against the live site in minutes. Contributing the change back to the public API is free.
What happens if I call an endpoint that has an issue?+
Errors are machine-readable: a bad call returns a clean status with the list of available endpoints and a repair hint, so an agent (or you) can recover or trigger a fix instead of failing silently. Confirmed failures feed the automatic repair queue.
Common use cases
  • Build a parts lookup tool that maps model numbers to their corresponding Parts List PDFs for a specific manufacturer
  • Aggregate all MSDS documents across manufacturers for a safety compliance database
  • Index specification sheets by equipment type to power a product comparison tool for commercial refrigeration
  • Automate service manual retrieval keyed on model number for a field technician mobile app
  • Mirror the full document library locally by paginating through all 393 pages and storing pdf_url references
  • Filter Ice-O-Matic manuals by keyword to surface relevant service documentation for a specific unit model
  • Populate a vendor portal with up-to-date equipment documentation organized by manufacturer and equipment category
Pricing & limitsSee full pricing →
TierPriceCredits/monthRate limit
Free$0/mo1005 req/min
Hobby$30/mo1,00020 req/min
Developer$100/mo5,000100 req/min

One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.

Frequently asked questions
Does Total Apex have an official developer API?+
Total Apex does not publish an official developer API or documented public data feed for their document library.
What does the `list_documents` endpoint actually return for each document?+
Each document object contains five fields: pdf_url (the direct link to the PDF file), document_name, model (the equipment model number), manufacturer, and equipment_type. Pagination metadata — page, total_items, total_pages, and items_on_page — is returned at the top level of each response.
Can I filter documents for more than one manufacturer in a single request?+
The manufacturer parameter currently accepts exactly one manufacturer value per request. To retrieve documents across multiple manufacturers, you would make one request per manufacturer. You can fork this API on Parse and revise it to accept multi-value manufacturer filtering.
Does the API return document content or full-text extracted from the PDFs?+
The API returns pdf_url and document metadata (name, model, manufacturer, equipment type) but does not return extracted text content from inside the PDFs. The keyword filter applies to document names and surface-level content. Full PDF text extraction is not currently covered. You can fork this API on Parse and revise it to add a text-extraction endpoint.
Are all manufacturers in the Total Apex catalog available as filter options?+
The manufacturer filter supports the set of manufacturers reflected in the Total Apex document library at the time the API was built: Ice-O-Matic, Lancer, Crysalli, FBD, Cornelius, and Solventum | 3M. Manufacturers whose documents sit outside that set are not currently filterable by name. You can fork this API on Parse and revise it to expand manufacturer coverage.
Page content last updated . Spec covers 1 endpoint from totalapex.com.
Related APIs in B2b DirectorySee all →
crunchbase.com API
Search and retrieve detailed information about companies, investors, and key people to discover funding opportunities, track market competitors, and analyze investment trends. Access comprehensive profiles including organization details, investor backgrounds, and complete funding round histories all in one place.
dnb.com API
Search millions of companies in Dun & Bradstreet's global business directory to find detailed company profiles and verify D-U-N-S numbers. Look up key business information like company details and identifiers to support due diligence, sales prospecting, and business intelligence needs.
opencorporates.com API
Access comprehensive company registration data, officer details, and filing histories from OpenCorporates across jurisdictions worldwide to research businesses and their leadership. Search for specific companies or officers, retrieve detailed corporate information, and explore filing records to support due diligence, compliance checks, and business intelligence.
ycombinator.com API
Access comprehensive data from the Y Combinator ecosystem, including company profiles, founder and partner information, job listings, and the YC library. Filter companies by batch, industry, and hiring status, and explore detailed profiles with social links, team information, and funding metadata.
ulprospector.com API
Search and browse chemicals and materials from the UL Prospector database across multiple industries, then retrieve detailed specifications and properties for any material you find. Discover industry-specific products and access comprehensive material information to support your sourcing and product development needs.
kvk.nl API
Search for Dutch businesses and retrieve detailed company information such as registration numbers, addresses, and business details directly from the official KVK trade register. Look up specific companies to access their official registration data and verify business information in the Netherlands.
pappers.fr API
Search French companies and directors to access detailed business profiles, ownership structures, trademark information, and legal filings all in one place. Build professional networks, track company leadership, and monitor business intelligence across France's official registry data.
thebluebook.com API
Search and retrieve company profiles from The Blue Book Building & Construction Network. Find commercial contractors by keyword, trade category (CSI code), and geographic region.