U.S. Ghost Kitchen & Virtual Brand Detector avatar

U.S. Ghost Kitchen & Virtual Brand Detector

Pricing

$790.00 / 1,000 analyzed locations

Go to Apify Store
U.S. Ghost Kitchen & Virtual Brand Detector

U.S. Ghost Kitchen & Virtual Brand Detector

Reveal likely delivery-only competition in any U.S. market. Enter a city, ZIP code, or address to find brands that may share a kitchen, operate delivery-only, or match known virtual brands, with evidence and coverage notes.

Pricing

$790.00 / 1,000 analyzed locations

Rating

0.0

(0)

Developer

Critical Distinction

Critical Distinction

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 hours ago

Last modified

Categories

Share

Reveal likely delivery-only competition before you launch, pitch, lease, invest, or expand.

Most market scans treat each delivery-app listing as a separate business. That can make a market look cleaner, more fragmented, or less competitive than it really is. This Actor helps you see where multiple brands may share a kitchen, where delivery-only concepts may be concentrated, and where known virtual brands may already be active.

Enter a U.S. city, ZIP code, or street address. The Actor checks DoorDash, Uber Eats, and Grubhub, then returns flagged brands, the evidence behind each flag, and a simple run summary with coverage notes.

What This Actor Is

A U.S. market intelligence tool for finding likely ghost kitchens and virtual brands.

A ghost kitchen is a kitchen that mainly prepares food for delivery, often without a dine-in storefront. A virtual brand is a delivery-only brand that operates under a separate name, often from an existing restaurant or shared kitchen.

Why Teams Use It

Traditional market research often counts delivery-app listings at face value. That can hide shared-kitchen activity and overstate how many truly independent operators are in a market.

Use this Actor when you need a clearer read on:

  • whether a neighborhood is already crowded with delivery-only brands
  • whether several brands near a property appear to come from the same kitchen
  • whether a trade area shows meaningful ghost-kitchen or virtual-brand activity before outreach, expansion, or underwriting

Example: a sales team pitching commissary kitchen services in downtown Chicago can use the Actor to see whether several delivery brands appear to trace back to a small number of addresses.

How It Works

  1. Enter a U.S. city, ZIP code, or address.
  2. The Actor reviews listings from DoorDash, Uber Eats, and Grubhub in that area.
  3. It standardizes addresses, groups brands that appear to operate from the same place, checks for delivery-only patterns, and matches known virtual brands.
  4. It classifies each result and explains the evidence in plain English.
  5. It writes a run summary so you can tell whether the coverage was strong or partial.

Why The Output Is Credible

This is not a black-box label.

Each result includes the reason it was flagged, such as:

  • multiple brands at the same address
  • signs the brand is delivery-only
  • a match to a known virtual-brand family
  • supporting or conflicting storefront signals

The Actor also tells you when a platform returned only partial data. That helps you separate a genuinely quiet market from a thin or interrupted collection run.

For stronger storefront validation, you can add an optional Yelp Fusion API key. That enrichment can bring in ratings, review counts, photos, website presence, and other signals that help distinguish an established storefront restaurant from a delivery-first concept.

Important Notes

This Actor is built for market research, commercial planning, and due diligence. It is not an official business registry and it does not make a legal determination.

It currently supports U.S. locations only. It relies on public delivery-platform listings rather than official platform feeds or government records. Address matching is strong but not perfect because platforms do not always format locations the same way.

When coverage is incomplete, the Actor surfaces that clearly in the run summary instead of hiding the uncertainty.

What You Can Spot Quickly

  • Shared-kitchen clusters — multiple brands that appear to operate from the same address
  • Known virtual brands — delivery-only brands linked to established parent companies
  • Delivery-only concepts — brands with little evidence of a normal storefront
  • Local saturation — areas where ghost-kitchen activity appears concentrated around a property or neighborhood

Who Uses It

Consultants and strategy teams — Size a market more accurately before advising on expansion, positioning, or virtual-brand strategy.

Sales and business development teams — Prioritize markets and properties where shared-kitchen activity may signal demand for kitchen space, restaurant services, or delivery-focused infrastructure.

Investors, brokers, and real estate teams — Evaluate whether a property sits in an area with meaningful ghost-kitchen density and hidden delivery competition.

Researchers and journalists — Turn a hard-to-see market trend into structured, evidence-backed findings.

What You Enter

You only need one required field: the U.S. market you want to check. The rest help you narrow the scan, go deeper, or make the output more conservative.

FieldDefaultWhat it does
locationrequiredThe U.S. city and state, ZIP code, or street address you want to inspect. Examples: Austin, TX, 90210, 123 Main St, Chicago, IL
radiusMiles5How far around the point to search. Range: 1 to 25. If a platform supplies distance data, listings outside the radius are removed. If it does not, the Actor keeps the candidate and records that limit in the run diagnostics.
cuisineFilternoneRestrict the scan to one category, such as pizza or wings, when you want a more focused segment view.
maxRestaurants200Maximum number of deduplicated candidates to review in depth. Range: 10 to 1000. Use a higher number for a fuller market picture.
confidenceThreshold0.5Minimum score required for a result to be included. Range: 0.0 to 1.0. Higher values are more conservative. Lower values surface more borderline cases.
includeTraditionalRestaurantsfalseInclude results classified as traditional or unknown, not just likely ghost kitchens and virtual brands. Use this when you want a fuller market map.
yelpApiKeynoneOptional Yelp Fusion API key for extra validation signals such as ratings, review counts, photos, and website presence.

Good first run: start with one location, the default 5-mile radius, the default confidence threshold, and the default 200-restaurant limit.

What You Get Back

The Actor writes two outputs:

  1. Dataset results — one record per business reviewed.
  2. OUTPUT summary — a structured run summary with aggregate counts, platform coverage, and diagnostics.

Dataset Results

Each result record is built to answer three questions quickly:

  • What brand is this?
  • What did the Actor conclude?
  • Why did it conclude that?

Common fields include:

FieldWhat it tells you
name, address, platformUrl, sourcesThe business identity, where it was seen, and a source link
classification, confidenceScoreThe label and how strong the evidence looks on a 0.0 to 1.0 scale
evidenceSummaryA plain-English explanation of why the result was flagged
evidence.sharedAddressBrands, evidence.sharedAddressCountOther brands seen at the same address and how many there are
evidence.deliveryOnly, evidence.hasDineInSignals that support or weaken a delivery-only interpretation
evidence.isKnownVirtualBrand, evidence.knownParentChainWhether the brand matches a known virtual-brand family
evidence.foundOnPlatforms, evidence.foundOnPlatformCountWhich delivery apps showed the brand
evidence.externalRating, evidence.externalReviewCount, evidence.hasIndependentWebsite, evidence.hasPhotosExtra storefront signals when Yelp enrichment is available
addressClusterId, brandsAtThisAddressWhether the brand sits in a larger address cluster
scrapedAt, dataSourceWhen the record was collected and which source produced the final record

A typical result looks like this:

{
"name": "Wings Factory",
"address": "123 Main St, Austin, TX 78701",
"sources": ["doordash", "ubereats"],
"classification": "confirmed_ghost_kitchen",
"confidenceScore": 0.85,
"evidenceSummary": "3 other brands operate from this address. Delivery-only operation. No dine-in option confirmed.",
"evidence": {
"sharedAddressBrands": ["Burger Barn", "Pasta Palace", "Taco Town"],
"sharedAddressCount": 3,
"foundOnPlatforms": ["doordash", "ubereats"],
"foundOnPlatformCount": 2,
"deliveryOnly": true,
"hasDineIn": false,
"isKnownVirtualBrand": false,
"knownParentChain": null,
"distanceMiles": 1.2,
"cuisineType": "American",
"priceRange": "$$",
"rating": 4.2,
"reviewCount": 87
},
"addressClusterId": "addr_123_main_street_austin_tx_78701",
"brandsAtThisAddress": 4,
"scrapedAt": "2026-03-20T15:30:00Z",
"dataSource": "doordash"
}

OUTPUT Run Summary

The OUTPUT record helps you judge the run itself, not just the listings.

It includes:

  • how many businesses were analyzed
  • how many were flagged as ghost kitchens, virtual brands, traditional storefronts, or unknown
  • the location, radius, and result limit used
  • whether any platform returned only partial data
  • diagnostic notes explaining things like missing distance data or interrupted pagination
  • which platforms worked, struggled, or failed
  • total run duration

A typical summary looks like this:

{
"totalAnalyzed": 3,
"candidatesConsidered": 4,
"ghostKitchens": 2,
"virtualBrands": 1,
"traditional": 0,
"unknown": 0,
"location": "Austin, TX",
"requestedRadiusMiles": 3,
"requestedMaxRestaurants": 25,
"partialData": true,
"diagnostics": [
"Radius filtering remained best-effort for 1 listing because source distance data was unavailable."
],
"scrapersUsed": ["doordash", "ubereats", "grubhub"],
"scrapersPartial": ["doordash"],
"scrapersFailed": [],
"runDurationSeconds": 2.13
}

If every upstream platform is blocked before any trustworthy listing is collected, the run still fails. When storage is available, the Actor writes a zero-result OUTPUT summary first so you can see what happened instead of interpreting an empty result as a clean market.

How To Read The Classifications

ClassificationWhat it means in plain English
confirmed_ghost_kitchenStrong shared-address and operating evidence supports a ghost-kitchen call. Start here when you want the clearest signals.
likely_ghost_kitchenMeaningful ghost-kitchen indicators are present, but the evidence is not strong enough for the confirmed tier.
virtual_brandThe name matches a known virtual-brand family, but there is not enough address or operating evidence to call it a ghost kitchen by itself.
traditionalPositive storefront signals, such as dine-in, an established external listing, or an independent website, support a standard restaurant interpretation.
unknownThe listing was found, but the available signals are too limited or contradictory for a responsible call.

confidenceThreshold filters the numeric score. traditional and unknown still depend on what evidence exists, not just the score alone.

Example Use Cases

Market Pressure Review Before Expansion

A restaurant consultant compares several Dallas submarkets before recommending a virtual-brand launch. Running the Actor by neighborhood surfaces shared-address clusters, known virtual-brand parents, and delivery-only patterns so the team can decide which areas deserve manual follow-up.

Site Selection Or Underwriting

A real-estate or commissary operator evaluating a Chicago property runs the Actor with a 2-mile radius and includeTraditionalRestaurants: true. The results show which nearby addresses already host multiple delivery brands, where delivery-only clusters are concentrated, and whether the trade area looks crowded or under-served.

Known Limits

  • The Actor currently checks delivery-app listings from DoorDash, Uber Eats, and Grubhub.
  • Yelp enrichment is optional. Without a Yelp Fusion API key, website presence, photos, and some stronger storefront signals may remain unknown rather than being treated as false.
  • Address matching is strong but not perfect because delivery apps do not always format locations the same way.
  • The Actor is limited to U.S. locations.
  • Radius handling is only as precise as the source data. When a platform omits listing distance, the Actor keeps the candidate and records a best-effort radius note in OUTPUT.
  • Platform access can be rate-limited or restricted. Partial coverage is surfaced in the final status message and in OUTPUT. A total upstream blackout writes a structured diagnostic OUTPUT summary and fails the run instead of returning a misleading empty dataset.

Disclaimer

This is an unofficial Actor. It is not affiliated with, endorsed by, or associated with DoorDash, Uber Eats, Grubhub, or Yelp. All product names, trademarks, and registered trademarks are the property of their respective owners.

Permissions

This Actor is designed to run with limited permissions. It uses only its own default dataset and key-value store, plus outbound HTTP requests to delivery platforms, Nominatim geocoding, and the optional Yelp Fusion API. It does not require access to your other Apify storages or account resources.

Pricing

This Actor currently uses Pay Per Event pricing at $0.79 per analyzed location.

One run analyzes one city, ZIP code, or street address. If you check 3 markets, you pay for 3 analyzed locations.

There are no separate pass-through compute or platform-usage charges added on top of that event price.

FAQ

How long does a typical run take? A standard city search with the default 200-restaurant limit usually finishes in 2 to 5 minutes. Larger searches, such as a 25-mile radius with a 1000-restaurant cap, can take longer.

Can I analyze multiple cities in one run? No. Each run analyzes one location. To review multiple cities, schedule multiple runs or batch them through the Apify API.

How should I think about accuracy? The strongest signal is multiple brands at the same address. Known virtual-brand matching is exact when a match exists. Delivery-only and no-dine-in signals are treated as supporting evidence, not proof by themselves. When the evidence is mixed or too thin, a listing can remain unknown instead of being forced into a confident label.

How often should I rerun it? That depends on how actively you monitor a market. Monthly runs are a good baseline for market tracking. Weekly runs make more sense when you are watching an active target area or supporting ongoing sales outreach.

Release History

See ./CHANGELOG.md for version-by-version release notes and migration guidance.