Apple API: Check Apple Store pickup
Checks in-store pickup availability for an exact Apple product configuration (name or part number) near a ZIP, postal code or city, listing nearby Apple Stores by distance with their pickup messages. No reservation is made.
Unofficial. Not affiliated with or endorsed by Apple.
Inputs
Values from the run on Oct 31, 2026, shown under Output.
- Country optional
country Country name or two-letter code, such as Canada. Defaults to United States.
United States (default)
- Product, required
product Product and exact configuration, such as iPhone 18 Pro 256GB Black or an Apple part number.
iPhone 18 Pro 256GB Black
- Location, required
location ZIP or postal code or city, such as 94103.
94103
Input as JSON
{ "product": "iPhone 18 Pro 256GB Black", "location": "94103"}Output
{ "stores": [ { "address": "300 Post Street, San Francisco, CA, 94108", "distance": "0.9 mi", "store_name": "Union Square", "store_number": "R075", "pickup_message": "Available Today", "store_page_link": "https://www.apple.com/retail/unionsquare" , "pickup_available": true }, { "address": "2125 Chestnut Street, San Francisco, CA, 94123", "distance": "2.29 mi", "store_name": "Chestnut Street", "store_number": "R217", "pickup_message": "Available Today", "store_page_link": "https://www.apple.com/retail/chestnutstreet" , "pickup_available": true }, { "address": "3251 20th Avenue, San Francisco, CA, 94132", "distance": "4.95 mi", "store_name": "Stonestown", "store_number": "R033", "pickup_message": "Available Today", "store_page_link": "https://www.apple.com/retail/stonestown" , "pickup_available": true } ], "apple_part_number": "MJQ34LL/A" , "configuration_checked": "iPhone 18 Pro 256GB Black"}Code
curl https://api.fous.com/v1/runs \ -H "Authorization: Bearer $FOUS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"method":"apple.com/check_store_pickup","input":{"product":"iPhone 18 Pro 256GB Black","location":"94103"}}' # Save as fous.py, then run: python3 fous.pyimport json, os, timefrom urllib.error import HTTPErrorfrom urllib.request import Request, urlopenAPI = "https://api.fous.com/v1/runs" KEY = os.environ["FOUS_API_KEY"]HEADERS = { "Authorization": f"Bearer {KEY}", "Content-Type": "application/json" ,}def call(url, body=None): data = json.dumps(body).encode() if body else None request = Request(url, data, HEADERS) try: with urlopen(request, timeout=120) as r: return r.status, json.load(r) except HTTPError as error: message = json.load(error)["error"]["message"] raise RuntimeError(message) from errorstatus, run = call(API, { "method": "apple.com/check_store_pickup" , "input": { "product": "iPhone 18 Pro 256GB Black", "location": "94103" }})# 202: still going after 30 s. Ask again until it ends.while status == 202: time.sleep(2) status, run = call(f"{API}/{run['id']}")print(json.dumps(run["data"], indent=2))// Save as fous.mjs, then run: node fous.mjsconst api = "https://api.fous.com/v1/runs" ;const headers = { Authorization: `Bearer ${process.env.FOUS_API_KEY}`, "Content-Type": "application/json" ,};let response = await fetch(api, { method: "POST", headers, body: JSON.stringify({ "method": "apple.com/check_store_pickup" , "input": { "product": "iPhone 18 Pro 256GB Black", "location": "94103" } }), signal: AbortSignal.timeout(120_000),});let run = await response.json();// 202: still going after 30 s. Ask again until it ends.while (response.status === 202) { await new Promise((done) => setTimeout(done, 2_000)); response = await fetch(`${api}/${run.id}`, { headers }); run = await response.json();}if (!response.ok) throw new Error(run.error.message);console.log(run.data);# Connect your agent to Fous once, over MCP (Streamable HTTP):# https://api.fous.com/mcp# Set FOUS_API_KEY first: create a key at https://app.fous.com/keys.# Claude Codeclaude mcp add \ --scope user \ --transport http fous https://api.fous.com/mcp \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Codexcodex mcp add fous \ --url https://api.fous.com/mcp \ --bearer-token-env-var FOUS_API_KEY# Cursor, VS Code, Windsurf, Cline and morenpx -y add-mcp https://api.fous.com/mcp -g -n fous \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Then ask your agent:# "Use Fous to run apple.com/check_store_pickup# with {"product":"iPhone 18 Pro 256GB Black","location":"94103"}"Over HTTP, the answer’s data holds the output. A run still going after 30 seconds answers 202 with its id: ask GET /v1/runs/{id} until it ends.
Schema
Input schema
{ "type": "object", "required": [ "product", "location" ], "properties": { "country": { "type": "string", "default": "United States", "description": "Country name or two-letter code, such as Canada. Defaults to United States." }, "product": { "type": "string", "minLength": 1, "description": "Product and exact configuration, such as iPhone 18 Pro 256GB Black or an Apple part number." }, "location": { "type": "string", "minLength": 1, "description": "ZIP or postal code or city, such as 94103." } }}Output schema
{ "type": "object", "required": [ "configuration_checked", "apple_part_number", "stores" ], "properties": { "stores": { "type": "array", "items": { "type": "object", "required": [ "store_name", "address", "distance", "pickup_available", "pickup_message", "store_page_link", "store_number" ], "properties": { "address": { "type": [ "string", "null" ] }, "distance": { "type": [ "string", "null" ], "description": "Distance with units as shown by Apple." }, "store_name": { "type": [ "string", "null" ] }, "store_number": { "type": [ "string", "null" ], "x-fous-developer": true }, "pickup_message": { "type": "string" }, "store_page_link": { "type": [ "string", "null" ] }, "pickup_available": { "type": "boolean" } }, "additionalProperties": false }, "description": "Nearby Apple Stores ordered by distance, up to 12." }, "apple_part_number": { "type": "string", "description": "Apple part number.", "x-fous-developer": true }, "configuration_checked": { "type": "string", "description": "Exact product configuration checked." } }, "additionalProperties": false}- Price
- 1 credit per completed run (1¢ with pay as you go); failed runs are free.
- Method
apple.com/check_store_pickup- Returns
- configuration checked, Apple part number, stores (name, address, distance, pickup available, pickup message, store page link)
Use it from your agent
Give your agent this line. It reads SKILL.md, gets a Fous API key and connects the Fous MCP server. Its run then takes the method apple.com/check_store_pickup with the inputs above.
Ask your agent
- Can I pick up a MacBook Air 13-inch M4 16GB 512GB Midnight today at any Apple Store near 60614?
- Which Apple Stores near Toronto, Canada have the iPhone 17 Pro Max 512GB Deep Blue available for in-store pickup?
- Check pickup availability for part number MX2D3LL/A around ZIP 10001, nearest stores first
- I need AirPods Pro 3 today — which stores close to Austin, TX can have them ready for pickup? Don't reserve anything.
- Look up apple.com store pickup options for an iPad Air 11-inch M3 128GB Wi-Fi Space Gray near postal code SW1A 1AA in the UK
See more
All Apple methodsGets current Apple Store prices and the configurations on sale for a product in one country. It includes only models sold on that country's public store.
apple.com/get_product_pricesCompares the Apple Store price of one product configuration across up to 15 countries, converted with the latest European Central Bank reference rates.
apple.com/compare_country_pricesLists the Apple Certified Refurbished products shown for a product type and country, cheapest first. Original prices and savings are included only when Apple shows them.
apple.com/list_refurbished_productsGets an iPhone or iPad app's public App Store listing by name or link. You can narrow it by developer and country. In-app purchases are included when the page lists them.
apps.apple.com/get_appFinds iPhone and iPad apps by keyword in a chosen country's App Store, with ratings, prices, categories and App Store links.
apps.apple.com/search_appsGets customer reviews for an iPhone or iPad app, found by name or App Store link, from the selected country's App Store.
apps.apple.com/get_app_reviewsGets an Apple Podcasts show's details and its newest available episodes, by show name or Apple Podcasts link.
podcasts.apple.com/get_podcastFinds Apple Podcasts shows by name or topic in a country, ordered by search relevance, with ratings when the show page provides them.
podcasts.apple.com/search_podcasts