Documentation

Harris Teeter CLI

harris-teeter-pp-cli

Install

npx -y @mvanhorn/printing-press-library install harris-teeter

Installs 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 - --json output to stdout, errors to stderr
  • Filterable - --select id,name returns only fields you need
  • Previewable - --dry-run shows 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-friendly is 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 doctor to check credentials Not found errors (exit code 3)
  • Check the resource ID is correct
  • Run the list command 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.