Boothlist turns the Gulfood and Natural Products Expo West exhibitor directories into a spreadsheet you can filter by sector, country and product. Know which booths buy what you sell before you land, and start outreach before the doors open.
The exhibitor directory is a slow web app. Twenty results a page, one click per company to see what they make. Nobody finishes it, so the sheet stops somewhere around the letter F.
No plan, so everyone walks the aisle closest to the entrance and talks to whoever makes eye contact. The brands that actually buy your ingredient were two halls over.
The organizer does sell a lead list, at a price built for sponsors. So you rebuild one from business cards instead, and the first email goes out after your buyer has forgotten the show.
This is the full inventory: 15 endpoints across 4 sources. No padding, no "coming soon" logos.
Ten endpoints covering these eight kinds of data. Enough to go from "who is exhibiting" to "what are they launching this year" for a single account.
The exhibitor list for your route, and the speaker list for knowing which brands are on stage.
For other shows: where 10times lists exhibitors for an event, you can pull them. Depth depends on what is listed there.
Enrich a company you met with its published supplier profile before it goes into the CRM.
We do not cover it yet, and we will not pretend to. Additional shows are built on request: send us the directory link and we will tell you honestly whether it can be done and how long it takes.
You do not need an engineer to get value. The output is rows and columns your team already knows how to sort.
Pick the show. Gulfood or Expo West today. Tell us the sectors, countries or product words that describe your buyer.
Get the sheet. One row per exhibitor: company, booth, hall, sector, country, products, website. Open it in Excel or Google Sheets, or import it into your CRM as accounts.
Split the floor. Sort by hall, assign booths to reps, and send the "see you at booth..." note before the show instead of three weeks after.
| A | B | C | D | E | F | |
|---|---|---|---|---|---|---|
| 1 | company | booth | sector | country | products | owner |
| 2 | Fictive Oat Works | A-03 | Plant-based | USA | oat milk; barista oat | Dana |
| 3 | Pretend Protein Labs | A-12 | Plant-based | USA | pea protein; protein bars | Dana |
| 4 | Faux Jerky Collective | B-06 | Plant-based | Brazil | plant-based jerky | Omar |
| 5 | Test Kitchen Tempeh | B-13 | Plant-based | Thailand | tempeh; tofu | Omar |
| 6 | Mythical Almond Dairy | C-05 | Plant-based | Spain | almond milk; vegan cheese | Priya |
| 7 | Stand-In Soy Works | C-16 | Plant-based | India | soy protein; tofu | Priya |
Every dataset is a hosted endpoint. One POST and the exhibitor data comes back as JSON, ready for your warehouse, your enrichment flow or a nightly CRM sync.
Each endpoint is a function with a stable ID. "Gulfood keyword exhibitor search" is one. "Expo West exhibitor directory" is another.
We open the directory for you. The call loads the show's site in a real browser on our side and reads what is published. You run no scrapers and no browsers.
Re-run it as the show gets closer. Exhibitor lists keep changing in the weeks before doors open. Call again and diff the new booths.
# Gulfood: keyword exhibitor search curl -L -X POST \ "https://api.notte.cc/functions/$FUNCTION_ID/runs/start" \ -H "Authorization: Bearer $KEY" \ -H "Content-Type: application/json" \ -d '{ "function_id": "'"$FUNCTION_ID"'", "variables": { "keyword": "plant-based" } }' # The variable names each endpoint accepts are # listed with the endpoint. "keyword" here is an # example.
// Illustrative response shape. Field names vary by // endpoint. Companies below are invented. { "status": "closed", "result": { "show": "Gulfood", "query": "plant-based", "count": 2, "exhibitors": [ { "company": "Fictive Oat Works", "booth": "A-03", "hall": "A", "sector": "Plant-based", "country": "USA", "products": ["oat milk", "barista oat"], "website": "https://fictive-oat-works.example" }, { "company": "Pretend Protein Labs", "booth": "A-12", "hall": "A", "sector": "Plant-based", "country": "USA", "products": ["pea protein", "protein bars"], "website": "https://pretend-protein-labs.example" } ] } }
import csv, os, requests
FUNCTION_ID = os.environ["FUNCTION_ID"]
KEY = os.environ["KEY"]
r = requests.post(
f"https://api.notte.cc/functions/{FUNCTION_ID}/runs/start",
headers={"Authorization": f"Bearer {KEY}"},
json={
"function_id": FUNCTION_ID,
"variables": {"keyword": "plant-based"},
},
timeout=300,
)
r.raise_for_status()
# Illustrative: adjust to the endpoint's real shape.
rows = r.json()["result"]["exhibitors"]
with open("targets.csv", "w", newline="") as f:
w = csv.DictWriter(f, fieldnames=rows[0].keys())
w.writeheader()
w.writerows(rows)
A working demo on 36 invented exhibitors. Pick who you sell to, add a product word, and copy the CSV. The real thing does this on the full directory.
"We used to split the halls by who got there first. This year every rep had a sheet with their booths, sorted by hall, and the reason each one was on it. First show where I could tell my VP why we talked to who we talked to."
"I filtered for dairy and beverage brands from three countries, sent a short note with our stand number the week before, and people actually came looking for us. The list was in the CRM before I packed."
"Our ops person wired the endpoint into the account import in an afternoon. I never saw the API. I just saw the exhibitors show up as accounts with a booth field, which is all I wanted."
No. Boothlist is company-level exhibitor information as published in the show's public directory: company, booth, sector, country, products and website. We do not provide personal contact details such as emails or phone numbers of individuals, and we do not promise them. Finding the right person at each company is still your job, or your contact tool's.
Gulfood, with 10 endpoints, and Natural Products Expo West, with an exhibitor directory and a speaker directory. Through 10times we can also pull exhibitors for other events where 10times lists them. That is the whole list today. Other shows are built on request.
The organizer's list is their own product, usually tied to sponsorship or badge scanning, and it can include things we do not have. Boothlist is only what the public exhibitor directory shows, turned into rows you can filter. It is for planning who to visit and who to write to, not a record of who visited your stand.
Each call reads the directory at the time you run it. Exhibitor lists change in the weeks before a show, so re-run close to the date. If the directory is not published yet for the next edition, there is nothing for us to read.
Yes. Ask for the CSV or a Google Sheet and treat it like any other account list. The API is there for the day your RevOps person wants it flowing into the CRM on its own.
The endpoints are maintained on our side. When a directory's layout changes we repair the endpoint and you keep calling the same function ID.
No. Boothlist is independent and is not affiliated with or endorsed by any show or organizer. Please check each show's terms and your own outreach rules before you use the data.
Boothlist is powered by Notte, a platform for hosted browser automation. Each endpoint is a Notte function that opens the directory in a real browser and returns structured JSON.
Start with a free sample sheet from Gulfood or Expo West and see if your buyers are in it.