99 Ranch API99ranch.com ↗
Search 99 Ranch Market's product catalog, retrieve detailed product info, and find store locations by ZIP code via a structured JSON API.
What is the 99 Ranch API?
The 99 Ranch Market API provides 3 endpoints covering product search, product detail, and store location lookup across one of the largest Asian grocery chains in the US. The search_products endpoint returns paginated product results scoped to a specific store, including price, brand, weight, and availability. get_product_detail expands any result into full variant data, category hierarchy, images, and ratings.
curl -X POST 'https://api.parse.bot/scraper/cc73b0a6-25d1-4c3e-bfd3-0cfb6fb8a13e/search_products' \
-H 'X-API-Key: $PARSE_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"page": "1",
"keyword": "rice",
"store_id": "8899",
"zip_code": "91754",
"page_size": "5"
}'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 99ranch-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.
"""Walkthrough: 99 Ranch Market SDK — search products and drill into details."""
from parse_apis.api_99ranch_com_api import NinetyNineRanch, ProductNotFound
client = NinetyNineRanch()
# Search for products — limit caps total items fetched across all pages.
for product in client.products.search(keyword="jasmine rice", limit=5):
print(product.name, product.brand, product.price, product.net_weight, product.net_weight_uom)
# Drill into the first result's full detail (images, variants, categories).
product = client.products.search(keyword="noodle", limit=1).first()
if product:
detail = product.details()
print(detail.name, detail.avg_rating, detail.review_count)
for v in detail.variants:
print(f" {v.name} — ${v.price} ({v.country_of_origin})")
# Fetch a product detail directly by ID.
try:
detail = client.product_details.get(product_id="1601108")
print(detail.name, detail.brand, detail.category)
except ProductNotFound as exc:
print(f"Product not found: {exc.product_id}")
print("exercised: products.search / product.details / product_details.get")
Full-text search over the 99 Ranch Market product catalog. Returns paginated results with product name, brand, price, weight, availability, and image. Results are scoped to a specific store (by store_id) and default to in-stock items only. Results are auto-iterated across pages.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number for pagination, 1-based. |
| keywordrequired | string | Search query to match against product names and descriptions. |
| store_id | string | Store identifier that determines product availability and pricing. Defaults to the Monterey Park, CA store. |
| zip_code | string | 5-digit US ZIP code for store selection context. |
| page_size | integer | Number of products per page, maximum 28. |
{
"type": "object",
"fields": {
"page": "integer current page",
"total": "integer total matching results",
"products": "array of product summary objects",
"page_size": "integer items per page",
"total_pages": "integer total pages",
"has_next_page": "boolean"
},
"sample": {
"data": {
"page": 1,
"total": 198,
"products": [
{
"upc": "073234020083",
"name": "KOKUHO ROSE PINK",
"tags": [],
"brand": "KOKUHO",
"image": "https://img.awsprod.99ranch.com/3f91f63c9874e59fd48751bf113273b0.JPG",
"price": 11.49,
"variant": "5.0000 lb/ea",
"available": 6,
"net_weight": 5,
"product_id": 1601108,
"retail_price": 11.49,
"net_weight_uom": "lb",
"country_of_origin": "USA"
}
],
"page_size": 5,
"total_pages": 40,
"has_next_page": true
},
"status": "success"
}
}About the 99 Ranch API
Product Search
The search_products endpoint accepts a keyword string and an optional store_id to scope results to a specific 99 Ranch Market location. Results default to the Monterey Park, CA store when no store_id is provided. Each page returns up to 28 products (controlled by page_size), and the response includes total, total_pages, and has_next_page fields to drive pagination. Each product summary object includes the product name, brand, price, weight, availability status, and an image URL.
Product Detail
Passing a product_id from search results to get_product_detail returns the full product record. This includes an images array, a variants array covering different sizes or packaging options, avg_rating, review_count, a description string, and a category path array showing where the product sits in the store's taxonomy. The category_view field provides a human-readable display version of that path. Pricing and availability within variants reflect the selected store_id.
Store Lookup
The search_stores endpoint accepts a zip_code and an optional distance in miles. It returns stores sorted by proximity, with each store object containing address, contact information, geographic coordinates, and an online/offline availability status. The total field gives the count of matching locations, and the query parameters are echoed back (zip_code, distance) so callers can confirm the search scope used.
The 99 Ranch API is a managed, monitored endpoint for 99ranch.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when 99ranch.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 99ranch.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?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Build a price-comparison tool for Asian grocery products across different 99 Ranch store locations using store_id scoping.
- Automate a weekly inventory check for specific ingredients by keyword, tracking availability changes over time.
- Populate a recipe app with product matches from 99 Ranch by searching ingredient names and pulling brand and weight data.
- Find the nearest 99 Ranch Market store to a given ZIP code and check its online ordering availability.
- Aggregate product ratings and review counts from get_product_detail to surface the highest-rated items in a category.
- Build a barcode or product catalog reference tool using the variant, image, and category hierarchy data.
- Track price changes on specific product variants across store locations by polling get_product_detail with different store_ids.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 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.