Find and Stage Uber Eats Delivery Options

Site auth.uber.comTask find-and-stage-ubereats-delivery-optionsVersion v1Updated Aug 2, 2026Category shopping

Find currently open delivery stores and requested products near an address on Uber Eats, then stage selected choices without placing an order. This skill was captured from a live agent session on auth.uber.com and publishes here verbatim, exactly as an agent receives it.

NoteSelectors and URL schemes drift as sites change. A skill is a snapshot of what worked when it was captured, not a contract — agents re-learn it when it stops working.

Purpose

Find open Uber Eats delivery options for a supplied destination, including restaurant search results and alcohol/beer delivery, and optionally stage selected items in the cart without submitting checkout.

When to Use

Use when the caller provides a delivery address and product or cuisine requirements such as ramen and beer. The destination must be resolved first because Uber Eats encodes a location payload, including a provider reference and coordinates, in the pl query parameter.

Workflow

  1. Resolve the destination once. Navigate to https://www.ubereats.com/{locale} (the observed locale is jp-en), enter {address} in input#location-typeahead-home-input, wait for suggestions, and select the matching li#location-typeahead-home-item-0 or the exact matching suggestion. Read the resulting URL's pl parameter; preserve that encoded value for all subsequent navigations. Do not guess the provider reference or coordinates.
  2. Search the requested food category directly with one navigation: https://www.ubereats.com/{locale}/search?eventSource=searchTextV2&pl={pl}&q={query}&sc=SEARCH_SUGGESTION&searchEntered={query}&searchType=GLOBAL_SEARCH&vertical=ALL Add diningMode=DELIVERY when needed. After the page loads, run the restaurant extractor below. Keep only cards whose text indicates delivery and does not indicate closed/unavailable; return the store URL and visible availability, fees, ETA, and cuisine details.
  3. For beer or other alcohol, navigate directly to https://www.ubereats.com/feeds/alcohol_feed and, when supported by the locale, use the locale-prefixed equivalent or a discovered alcohol-feed link. Store links from this feed can be opened directly with ?diningMode=DELIVERY&pl={pl}&surfaceName=VERTICAL_FEED_ALCOHOL. Run the alcohol extractor below and retain beer-containing item/category text rather than assuming every alcohol item is beer.
  4. Open selected store URLs directly. Store pages use an opaque final path identifier; preserve the complete store URL returned by the search/feed rather than constructing or guessing an ID. Add selected items with the stable button[data-testid='add-to-cart-button']; use select for required options and button[data-testid='item-stepper-inc'] for quantity changes when present.
  5. Stage choices only: inspect the cart through [data-testid='go-to-checkout-button'] and the surrounding cart container, verify store, item, quantity, and subtotal, and stop before clicking the checkout control or submitting an order. Alcohol purchases may require sign-in, age verification, or other eligibility checks; do not bypass them.

Restaurant search extractor

Run as evaluate() on the loaded search page:

(() =>
  [...document.querySelectorAll('a[data-testid="store-card"]')]
    .map((a) => {
      const text = (a.innerText || "").trim();
      const lines = text
        .split(/\n+/)
        .map((x) => x.trim())
        .filter(Boolean);
      const unavailable =
        /closed|unavailable|not accepting|currently unavailable|temporarily closed/i.test(
          text,
        );
      return {
        name: lines[0] || "",
        href: a.href,
        text: text.slice(0, 1200),
        open: !unavailable,
        delivery: /delivery|deliver/i.test(text),
      };
    })
    .filter((x) => x.name))();

Alcohol/beer extractor

Run as evaluate() on the loaded alcohol feed or alcohol store page. It handles store cards and visible item/category links without assuming a single card structure:

(() => {
  const nodes = [
    ...document.querySelectorAll('a[data-testid="store-card"],a[href*="/store/"]'),
  ];
  const seen = new Set();
  return nodes
    .map((a) => {
      const href = a.href || "";
      const text = (a.innerText || "").trim();
      if (!href || seen.has(href) || !text) return null;
      seen.add(href);
      const lines = text
        .split(/\n+/)
        .map((x) => x.trim())
        .filter(Boolean);
      return {
        name: lines[0] || "",
        href,
        text: text.slice(0, 1600),
        open: !/closed|unavailable|not accepting|temporarily closed/i.test(text),
        beer: /\bbeer\b|ビール|lager|ale|stout|pilsner|ipa/i.test(text),
        alcohol: /alcohol|liquor|酒|ビール|ワイン|wine|sake/i.test(text),
      };
    })
    .filter((x) => x && x.alcohol)
    .filter((x) => x.open || x.beer);
})();

Site-Specific Gotchas

  • The destination payload is a URL-safe encoded JSON object in pl; observed fields include address, reference, referenceType, latitude, and longitude. Reuse the exact encoded value produced by Uber Eats for the current destination.
  • Address autocomplete may reject an English or Japanese freeform entry; retry with the postal code plus local Japanese address, then choose the exact suggestion rather than the first arbitrary button.
  • Search state is directly reachable with q, searchEntered, searchType, vertical, and eventSource; avoid homepage search typing once pl is known.
  • Alcohol uses a separate /feeds/alcohol_feed surface and may omit the /jp-en locale prefix in observed links. Preserve the returned store href and append the destination payload rather than guessing a locale or store identifier.
  • Store slugs are human-readable but the trailing store ID is opaque. Use the href emitted by a[data-testid="store-card"] or the alcohol feed.
  • Store item pages can contain frozen versions, modifiers, and quick-view links. Match the requested item text carefully and exclude similarly named frozen or unavailable products.
  • Cart controls are dynamic. Prefer data-testid selectors; avoid generated CSS classes. Staging must end before a[data-testid='go-to-checkout-button'] is activated.
  • Alcohol availability, age checks, delivery hours, and inventory are destination- and time-dependent; report the visible state rather than treating a store as permanently open.

Expected Output

Return the resolved destination, the direct search/feed URLs used, and structured lists of open ramen restaurants and open alcohol stores/items with names, URLs, visible delivery/ETA/fee information, and beer matches. If choices were staged, report each store, item, modifier, quantity, and cart subtotal, explicitly stating that checkout and order submission were not performed.

Call it

GET https://production-sfo.browserless.io/skills?token=TOKEN-HERE&domain=auth.uber.com&task=find-and-stage-ubereats-delivery-options