Skip to content
Rigel docs
Open Rigel

Past shopping trips

shopping.trip.list

GET/api/v1/households/{household_id}/queries/shopping.trip.list

  • Query
  • Rigel runs it

Past trips and orders, newest first by date: store, date, who shopped, how many things, the total if known, and how long the shopping took.

Parameters#

Past shopping trips: parameters
FieldDescription
household_idpathstringrequired

The household's ID.

store_idquerystringoptional

Only trips to this store.

limitqueryintegeroptional

How many to return, 1–200. Defaults to 20.

1 to 200Default 20
cursorquerystringoptional

The next_cursor of the previous page, with the same filters.

pattern ^(\d{4}-\d{2}-\d{2})\.(trp_[0-9A-HJKMNP-TV-Z]{26})$

Response#

200 The answer.

Past shopping trips: response fields
FieldDescription
itemsarray of objectsrequired
items[].idstringrequired

A shopping trip ID, such as trp_01JC0000000000000000000000.

items[].storeobject or nullrequired

Where it was, or null when unknown or the store was removed.

items[].store.idstringrequired

A store ID, such as sto_01JC0000000000000000000000.

items[].store.namestringrequired

The store's name.

items[].shopped_onstringrequired

The date, YYYY-MM-DD.

items[].shopperobject or nullrequired

Who did the shopping, if known.

items[].shopper.idstringrequired

A person ID, such as per_01JC0000000000000000000000.

items[].shopper.namestringrequired

What the family calls them.

items[].item_countintegerrequired

How many things it bought.

items[].total_minorinteger or nullrequired

The receipt's total in minor units of the currency, if known.

items[].currencystring or nullrequired

ISO currency code of the total and prices.

items[].minutesinteger or nullrequired

Minutes from the first item checked off to the last; null when unknown.

items[].finished_atstring (date-time) or nullrequired

When the trip was finished; null for one recorded from a receipt.

items[].has_receiptbooleanrequired

Whether a receipt photo is attached.

items[].order_numberstring or nullrequired

The store's order number, for an order; null for a trip shopped in person.

items[].arrived_onstring or nullrequired

The day an order arrived, YYYY-MM-DD; null while it's on its way, and for a trip shopped in person.

next_cursorstring or nullrequired

Send as cursor for the next page; null on the last page.

Errors#

Every error has the same envelope: error.code, error.message, error.details, error.recovery and error.request_id.

Past shopping trips: errors
StatusCodeWhen
400validation_failedA field is missing, misspelled or out of range. details.fields lists each problem.
401unauthenticatedThe request has no valid session.
404not_foundThe household doesn't exist, or you aren't a member of it.

Examples#

These are real. Each was recorded from a sample household, the Okafors, running through the whole API when this site was built.

List the shopping trips

Newest first.

Request, curl
curl 'https://rigel.house/api/v1/households/hh_01M6V9CS6GGVFCY7NAS8ZTQV95/queries/shopping.trip.list' \
  -H "Cookie: rigel_session=$RIGEL_SESSION"
Request, TypeScript
const response = await fetch("https://rigel.house/api/v1/households/hh_01M6V9CS6GGVFCY7NAS8ZTQV95/queries/shopping.trip.list", {
  headers: {
    Cookie: `rigel_session=${process.env.RIGEL_SESSION}`,
  },
});
const data = await response.json();
Request, HTTP
GET /api/v1/households/hh_01M6V9CS6GGVFCY7NAS8ZTQV95/queries/shopping.trip.list HTTP/1.1
Host: rigel.house
Cookie: rigel_session=<your session>
Response, 200
HTTP/1.1 200 OK
Content-Type: application/json
X-Request-Id: req_01M6V9CT91XV34JDM5ZYM0WCHT

{
  "items": [
    {
      "id": "trp_01M6V9CT8JBJVJK865ZH4D2ZZD",
      "store": {
        "id": "sto_01M6V9CT6QQBTTA6DBQXS60NCD",
        "name": "Greenway Market"
      },
      "shopped_on": "2026-11-07",
      "shopper": {
        "id": "per_01M6V9CS6RX26JK5KVYGRN22D2",
        "name": "Ada Okafor"
      },
      "item_count": 3,
      "total_minor": 1225,
      "currency": "USD",
      "minutes": 0,
      "finished_at": "2026-11-07T15:17:53.042Z",
      "has_receipt": false,
      "order_number": null,
      "arrived_on": null
    },
    {
      "id": "trp_01M6V9CT8S4T83B9C9T7FBKE1N",
      "store": {
        "id": "sto_01M6V9CT6VGD5JCJFJBVAFR4B3",
        "name": "Pantry Direct"
      },
      "shopped_on": "2026-11-04",
      "shopper": {
        "id": "per_01M6V9CS6RX26JK5KVYGRN22D2",
        "name": "Ada Okafor"
      },
      "item_count": 2,
      "total_minor": 3348,
      "currency": "USD",
      "minutes": null,
      "finished_at": null,
      "has_receipt": false,
      "order_number": "PD-48213",
      "arrived_on": "2026-11-06"
    }
  ],
  "next_cursor": null
}

List the trips to one store

Request, curl
curl 'https://rigel.house/api/v1/households/hh_01M6V9CS6GGVFCY7NAS8ZTQV95/queries/shopping.trip.list?store_id=sto_01M6V9CT6QQBTTA6DBQXS60NCD' \
  -H "Cookie: rigel_session=$RIGEL_SESSION"
Request, TypeScript
const response = await fetch("https://rigel.house/api/v1/households/hh_01M6V9CS6GGVFCY7NAS8ZTQV95/queries/shopping.trip.list?store_id=sto_01M6V9CT6QQBTTA6DBQXS60NCD", {
  headers: {
    Cookie: `rigel_session=${process.env.RIGEL_SESSION}`,
  },
});
const data = await response.json();
Request, HTTP
GET /api/v1/households/hh_01M6V9CS6GGVFCY7NAS8ZTQV95/queries/shopping.trip.list?store_id=sto_01M6V9CT6QQBTTA6DBQXS60NCD HTTP/1.1
Host: rigel.house
Cookie: rigel_session=<your session>
Response, 200
HTTP/1.1 200 OK
Content-Type: application/json
X-Request-Id: req_01M6V9CT93Z7E8FJS20RQN08VZ

{
  "items": [
    {
      "id": "trp_01M6V9CT8JBJVJK865ZH4D2ZZD",
      "store": {
        "id": "sto_01M6V9CT6QQBTTA6DBQXS60NCD",
        "name": "Greenway Market"
      },
      "shopped_on": "2026-11-07",
      "shopper": {
        "id": "per_01M6V9CS6RX26JK5KVYGRN22D2",
        "name": "Ada Okafor"
      },
      "item_count": 3,
      "total_minor": 1225,
      "currency": "USD",
      "minutes": 0,
      "finished_at": "2026-11-07T15:17:53.042Z",
      "has_receipt": false,
      "order_number": null,
      "arrived_on": null
    }
  ],
  "next_cursor": null
}

List the latest trip

next_cursor says there are more.

Request, curl
curl 'https://rigel.house/api/v1/households/hh_01M6V9CS6GGVFCY7NAS8ZTQV95/queries/shopping.trip.list?limit=1' \
  -H "Cookie: rigel_session=$RIGEL_SESSION"
Request, TypeScript
const response = await fetch("https://rigel.house/api/v1/households/hh_01M6V9CS6GGVFCY7NAS8ZTQV95/queries/shopping.trip.list?limit=1", {
  headers: {
    Cookie: `rigel_session=${process.env.RIGEL_SESSION}`,
  },
});
const data = await response.json();
Request, HTTP
GET /api/v1/households/hh_01M6V9CS6GGVFCY7NAS8ZTQV95/queries/shopping.trip.list?limit=1 HTTP/1.1
Host: rigel.house
Cookie: rigel_session=<your session>
Response, 200
HTTP/1.1 200 OK
Content-Type: application/json
X-Request-Id: req_01M6V9CT94SGV3Z26270NDT2RA

{
  "items": [
    {
      "id": "trp_01M6V9CT8JBJVJK865ZH4D2ZZD",
      "store": {
        "id": "sto_01M6V9CT6QQBTTA6DBQXS60NCD",
        "name": "Greenway Market"
      },
      "shopped_on": "2026-11-07",
      "shopper": {
        "id": "per_01M6V9CS6RX26JK5KVYGRN22D2",
        "name": "Ada Okafor"
      },
      "item_count": 3,
      "total_minor": 1225,
      "currency": "USD",
      "minutes": 0,
      "finished_at": "2026-11-07T15:17:53.042Z",
      "has_receipt": false,
      "order_number": null,
      "arrived_on": null
    }
  ],
  "next_cursor": "2026-11-07.trp_01M6V9CT8JBJVJK865ZH4D2ZZD"
}

List the trip before it

Send next_cursor back, with the same filters.

Request, curl
curl 'https://rigel.house/api/v1/households/hh_01M6V9CS6GGVFCY7NAS8ZTQV95/queries/shopping.trip.list?limit=1&cursor=2026-11-07.trp_01M6V9CT8JBJVJK865ZH4D2ZZD' \
  -H "Cookie: rigel_session=$RIGEL_SESSION"
Request, TypeScript
const response = await fetch("https://rigel.house/api/v1/households/hh_01M6V9CS6GGVFCY7NAS8ZTQV95/queries/shopping.trip.list?limit=1&cursor=2026-11-07.trp_01M6V9CT8JBJVJK865ZH4D2ZZD", {
  headers: {
    Cookie: `rigel_session=${process.env.RIGEL_SESSION}`,
  },
});
const data = await response.json();
Request, HTTP
GET /api/v1/households/hh_01M6V9CS6GGVFCY7NAS8ZTQV95/queries/shopping.trip.list?limit=1&cursor=2026-11-07.trp_01M6V9CT8JBJVJK865ZH4D2ZZD HTTP/1.1
Host: rigel.house
Cookie: rigel_session=<your session>
Response, 200
HTTP/1.1 200 OK
Content-Type: application/json
X-Request-Id: req_01M6V9CT95NJQYF36AFCTF9Q8W

{
  "items": [
    {
      "id": "trp_01M6V9CT8S4T83B9C9T7FBKE1N",
      "store": {
        "id": "sto_01M6V9CT6VGD5JCJFJBVAFR4B3",
        "name": "Pantry Direct"
      },
      "shopped_on": "2026-11-04",
      "shopper": {
        "id": "per_01M6V9CS6RX26JK5KVYGRN22D2",
        "name": "Ada Okafor"
      },
      "item_count": 2,
      "total_minor": 3348,
      "currency": "USD",
      "minutes": null,
      "finished_at": null,
      "has_receipt": false,
      "order_number": "PD-48213",
      "arrived_on": "2026-11-06"
    }
  ],
  "next_cursor": null
}

For Rigel#

Rigel's tool for this query is shopping_trip_list. Rigel runs this on its own, then says what it did. The agent guide has the rest.

Rigel is in early access, and sign-up is by invitation. Open Rigel