Documentation
Harris Teeter CLI
harris-teeter-pp-cli
Install
npx -y @mvanhorn/printing-press-library install harris-teeterInstalls the CLI binary and the agent skill for Claude Code, Codex, Cursor, Gemini CLI, Copilot, and more. Add --cli-only or --skill-only for one half. Requires Node.
Documentation
Harris Teeter grocery shopping API discovered from the logged-in web app
Learn more at Harris Teeter.
Created by @jwmoss (Jonathan Moss). Contributors: @tmchow (Trevin Chow).
Quick Start
1. Install
See Install above.
2. Authenticate
This CLI uses your browser session for authentication. Log in to .harristeeter.com in Chrome, then:
harris-teeter-pp-cli auth login --chrome
The CLI uses pycookiecheat, cookies, or cookie-scoop-cli when available. On this machine it can also fall back to the live Chrome session through agent-browser/browser-use, which matches the browser-sniff workflow used to create the CLI. If live browser fallback is unavailable, install one:
pip install pycookiecheat # Python (recommended)
brew install barnardb/cookies/cookies # Homebrew
When your session expires, run auth login --chrome again.
Product and coupon endpoints also require Harris Teeter's location/availability/fulfillment headers. The CLI defaults to the captured Beau Rivage Marketplace context (location-id=09700096, facility-id=12956). Override with HARRIS_TEETER_LOCATION_ID, HARRIS_TEETER_FACILITY_ID, HARRIS_TEETER_MODALITY_TYPE, or a full HARRIS_TEETER_LAF_OBJECT JSON value when using a different store.
3. Verify Setup
harris-teeter-pp-cli doctor
This checks your configuration and credentials.
4. Try Your First Command
harris-teeter-pp-cli cart
Unique Features
These capabilities aren't available in any other tool for this API.
Browser-backed reachability
-
auth login --chrome— Read Harris Teeter session cookies from the already logged-in Chrome session, falling back through agent-browser/browser-use when standalone cookie tools are missing.Use this first when the CLI reports auth errors or a browser session has changed.
harris-teeter-pp-cli auth login --chrome
Store-context grocery reads
-
products search— Search Harris Teeter products using the browser-observed Atlas search endpoint with location, fulfillment method, and LAF/modality headers.Use this to inspect current store-specific grocery results from a terminal or agent workflow.
harris-teeter-pp-cli products search --query milk --location-id 09700096 --page-size 5 --json --no-input -
products get— Fetch full product, offer, nutrition, inventory, and variant projections by UPC/GTIN through the logged-in Atlas product endpoint.Use this when an agent needs exact item metadata without scraping a rendered product page.
harris-teeter-pp-cli products get --upc 0007203673813 --json --no-input
Account-aware savings
-
coupons— List Harris Teeter digital coupons from the authenticated web endpoint, including optional UPC filtering.Use this to check available savings before building a grocery list.
harris-teeter-pp-cli coupons --page-size 5 --json --no-input -
cart— Inspect the authenticated Harris Teeter cart and shopping-list surfaces without exposing mutating checkout or order actions.Use this when an agent needs to understand the current cart state without changing it.
harris-teeter-pp-cli cart --json --no-input
Usage
Run harris-teeter-pp-cli --help for the full command reference and flag list.
Commands
account
Inspect logged-in customer preferences and membership state.
harris-teeter-pp-cli account enrollments- List membership enrollments and benefits for the current account.harris-teeter-pp-cli account preferences- List customer preferences for the logged-in account.
cart
Inspect the logged-in account cart.
harris-teeter-pp-cli cart list- List carts for the current logged-in Harris Teeter account.
coupons
List available digital coupons and coupon-product links.
harris-teeter-pp-cli coupons list- List available digital coupons, optionally filtered by UPC.
lists
Inspect Harris Teeter shopping lists.
harris-teeter-pp-cli lists get- Get a shopping list by ID.harris-teeter-pp-cli lists list- List shopping lists for the current logged-in account.
products
Search Harris Teeter products, look up item details, and inspect search facets.
harris-teeter-pp-cli products get- Get full product, offer, nutrition, inventory, and variant details by UPC/GTIN.harris-teeter-pp-cli products related-tags- Get related search tags for a query and location.harris-teeter-pp-cli products search- Search products for a store location and fulfillment method.harris-teeter-pp-cli products suggestions- Get search suggestions for a query and location.harris-teeter-pp-cli products visual-navigations- Get visual navigation categories shown on search pages.
recommendations
Inspect personalized grocery recommendations from the web app.
harris-teeter-pp-cli recommendations better-for-you- Get better-for-you product recommendations.harris-teeter-pp-cli recommendations purchase-history-homepage- Get homepage purchase-history shortcuts for the logged-in account.harris-teeter-pp-cli recommendations start-my-cart- Get the Start My Cart product recommendations shown on the homepage.
stores
Find Harris Teeter stores and store metadata.
harris-teeter-pp-cli stores- Find stores by ZIP code, city, state, or address text.
Output Formats
# Human-readable table (default in terminal, JSON when piped)
harris-teeter-pp-cli cart
# JSON for scripting and agents
harris-teeter-pp-cli cart --json
# Filter to specific fields
harris-teeter-pp-cli cart --json --select id,name,status
# Dry run — show the request without sending
harris-teeter-pp-cli cart --dry-run
# Agent mode — JSON + compact + no prompts in one flag
harris-teeter-pp-cli cart --agent
Agent Usage
This CLI is designed for AI agent consumption:
- Non-interactive - never prompts, every input is a flag
- Pipeable -
--jsonoutput to stdout, errors to stderr - Filterable -
--select id,namereturns only fields you need - Previewable -
--dry-runshows the request without sending - Read-only by default - this CLI does not create, update, delete, publish, send, or mutate remote resources
- Offline-friendly - sync/search commands can use the local SQLite store when available
- Agent-safe by default - no colors or formatting unless
--human-friendlyis set
Exit codes: 0 success, 2 usage error, 3 not found, 4 auth error, 5 API error, 7 rate limited, 10 config error.
Health Check
harris-teeter-pp-cli doctor
Verifies configuration, credentials, and connectivity to the API.
Configuration
Config file: ~/.config/harris-teeter-pp-cli/config.toml
Troubleshooting
Authentication errors (exit code 4)
- Run
harris-teeter-pp-cli doctorto check credentials Not found errors (exit code 3) - Check the resource ID is correct
- Run the
listcommand to see available items
HTTP Transport
This CLI uses Chrome-compatible HTTP transport for browser-facing endpoints. It does not require a resident browser process for normal API calls.
Discovery Signals
This CLI was generated with browser-captured traffic analysis.
- Target observed: https://www.harristeeter.com/ruxitagentjs_ICA15789NPQRTUVXfhqrtux_10337260504112723.js
- Capture coverage: 166 API entries from 889 total network entries
- Reachability: browser_http (78% confidence)
- Protocols: rest_json (75% confidence)
- Auth signals: bearer_token — headers: Authorization; api_key — query: filter.keyword, key
- Protection signals: cloudflare (90% confidence), akamai (75% confidence)
- Generation hints: browser_http_transport, requires_protected_client, weak_schema_confidence
- Candidate command ideas: create_EdClXAWAB — Derived from observed POST /qB1py7FxiRxje/xBaRro/nGmSVUVg/N3irhr9NJ5N5cQ/dW1ccAkbBg/G3J/EdClXAWAB traffic.; create_dont_forget_usual_products — Derived from observed POST /atlas/v1/recommendations/v1/dont-forget-usual-products traffic.; create_echoData — Derived from observed POST /clickstream/v1/echoData traffic.; create_events — Derived from observed POST /clickstream/v1/events traffic.; create_preferences — Derived from observed POST /atlas/v1/modality/preferences traffic.; create_prioritized_carousels — Derived from observed POST /atlas/v1/search/v1/prioritized-carousels traffic.; create_qESoJeGYu — Derived from observed POST /qB1py7FxiRxje/xBaRro/nGmSVUVg/p8irhr9N/Ph5ncAkbBg/V3l/qESoJeGYu traffic.; create_realtimeconversion — Derived from observed POST /track/realtimeconversion traffic.
Warnings from discovery:
- empty_payload: API-looking request returned an empty or null payload; schema confidence is weak.
- empty_payload: API-looking request returned an empty or null payload; schema confidence is weak.
- empty_payload: API-looking request returned an empty or null payload; schema confidence is weak.
- empty_payload: API-looking request returned an empty or null payload; schema confidence is weak.
- empty_payload: API-looking request returned an empty or null payload; schema confidence is weak.
- empty_payload: API-looking request returned an empty or null payload; schema confidence is weak.
- empty_payload: API-looking request returned an empty or null payload; schema confidence is weak.
- empty_payload: API-looking request returned an empty or null payload; schema confidence is weak.
- empty_payload: API-looking request returned an empty or null payload; schema confidence is weak.
- empty_payload: API-looking request returned an empty or null payload; schema confidence is weak.
Generated by CLI Printing Press
For agents: pass /documentation/harris-teeter/agents.md to install this CLI from a prompt.