Romania Mall Store Directory — All Malls, Unified Schema avatar

Romania Mall Store Directory — All Malls, Unified Schema

Pricing

from $3.00 / 1,000 store record extracteds

Go to Apify Store
Romania Mall Store Directory — All Malls, Unified Schema

Romania Mall Store Directory — All Malls, Unified Schema

Extract every store from Romania's major malls (NEPI, AFI, Iulius, Sun Plaza, Baneasa, ParkLake, Veranda, Colosseum). Unified 19-field schema with mall, floor, category, phone and anchor-tenant flags.

Pricing

from $3.00 / 1,000 store record extracteds

Rating

0.0

(0)

Developer

Oaida Adrian

Oaida Adrian

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

5 hours ago

Last modified

Share

Romania Mall Store Directory — All Malls, One Dataset

Extract every store in Romania's major malls as a single unified dataset. One crawl covers 8 operators and ~30 shopping centres — NEPI Rockcastle (Mega Mall, Promenada, Shopping City network), AFI Europe (Cotroceni, Ploiești), Iulius Group (Cluj, Iași, Suceava, Iulius Town), Sun Plaza, Băneasa, ParkLake, Veranda and Colosseum — and returns one record per store with a consistent 19-field schema that no mall operator publishes on its own.

The dataset is the directory layer beneath retail analytics: mall, store, category, floor/unit, contact details and an anchor-tenant flag (the foot-traffic drivers: hypermarkets, cinemas, department stores). Run it repeatedly and first_seen / last_seen / is_closed turn the directory into a vacancy & churn time-series — which stores opened, which closed, which anchors changed.

What you get

  • 🏬 ~4,000+ store records across ~30 Romanian malls in one output
  • 🗂️ Unified schema — identical fields from every operator, no per-mall joins
  • Anchor-tenant flags — hypermarket / cinema / department-store drivers marked automatically
  • 📍 Floor & unit where the operator publishes them (NEPI, Băneasa, Iulius, Sun Plaza, ParkLake)
  • 📅 Time-series readyfirst_seen / last_seen / is_closed per store for churn and vacancy analysis
  • 📞 Contact data — phone, website, email, opening hours where published

Input

{
"country": "ro",
"malls": ["all"],
"includeAnchor": true,
"extractDetails": false,
"output": "json"
}
FieldTypeDefaultDescription
countrystringroCountry code — only ro (Romania) is implemented
mallsarray["all"]Mall ids to crawl, or ["all"] for the full directory
includeAnchorbooleantrueSet false to exclude anchor tenants
extractDetailsbooleanfalseVisit each store page for floor/phone/hours/email (slower, richer). NEPI and Băneasa always carry full detail
outputstringjsonjson, csv or xlsx (csv/xlsx via Console export)

To crawl a subset, pass mall ids: {"malls": ["mega-mall-bucuresti", "afi-cotroceni", "iulius-cluj"]}.

Output

One dataset item per store:

{
"mall_id": "mega-mall-bucuresti",
"mall_name": "Mega Mall",
"mall_city": "Bucuresti",
"mall_address": "Str. Nitu Vasile 10, Bucuresti",
"mall_country": "ro",
"mall_operator": "NEPI Rockcastle",
"store_name": "Zara",
"store_brand": "Zara",
"category": "Shopping / Moda",
"floor": "Parter",
"unit_number": "zara_room_12",
"website": "https://www.zara.com",
"phone": "",
"email": "",
"opening_hours": "Luni - Duminică: 10:00-22:00",
"store_url": "https://www.megamallbucuresti.ro/magazine/zara",
"anchor_tenant": true,
"first_seen": "2026-08-13T10:00:00+00:00",
"last_seen": "2026-08-13T10:00:00+00:00",
"is_closed": false
}

Fields a source does not publish are returned as empty strings — records always have the same shape, so CSV/Excel exports stay clean.

Use cases

  • Retail analytics / site selection — store-mix analysis per mall, anchor presence, category density
  • Vacancy & churn monitoring — run on a schedule; stores that disappear get is_closed: true on the next run
  • Trade-area research — which anchors anchor each catchment, which brands are where
  • Leasing / REIT analysis — unit-level occupancy signal across a whole country
  • Local SEO & citations — accurate mall store lists with floor and unit references

Run it on a schedule or from your code

curl -X POST "https://api.apify.com/v2/acts/darknezz~ro-mall-store-directory/run-sync-get-dataset-items?token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"country":"ro","malls":["all"],"includeAnchor":true,"output":"json"}'

From Python with the official SDK:

from apify_client import ApifyClient
client = ApifyClient("YOUR_TOKEN")
run = client.actor("darknezz/ro-mall-store-directory").call(
run_input={"malls": ["all"], "extractDetails": True})
for store in client.dataset(run["defaultDatasetId"]).iterate_items():
print(store["mall_name"], store["store_name"], store["floor"])

Pricing

Pay-per-event: $0.003 per store extracted (the store-extracted event), plus Apify's standard compute. A full country directory run (~4,000 stores) costs about $12 in event fees; a single-mall run costs cents.

FAQ

Which malls are covered? All the major Romanian operators: NEPI Rockcastle (19 centres: Mega Mall, Promenada, Shopping City Sibiu/Timișoara/Galați/Buzău/Deva/Piatra Neamț/Satu Mare/Târgu Jiu/Râmnicu Vâlcea/Târgu Mureș, Braila Mall, Severin, Pitești Retail Park, Ploiești, Promenada Sibiu/Craiova, Vulcan), AFI Europe (Cotroceni, Ploiești), Iulius Group (Cluj, Iași, Suceava, Iulius Town Timișoara), Sun Plaza, Băneasa Shopping City, ParkLake, Veranda and Colosseum.

What is an anchor tenant? The foot-traffic drivers of a mall — hypermarkets (Auchan, Carrefour, Cora…), cinemas (Cineplexx, Cinema City…), department stores and big electronics/DIY/sport anchors. The flag is derived from the store name and category.

Where does the data come from? The operators' own public store pages and JSON APIs (NEPI's Strapi CMS API, AFI's brand sitemap, Iulius's shopping index, Sun Plaza/ParkLake/Veranda/Colosseum WordPress stores, Băneasa's Inertia index). All sources were verified live in August 2026.

Why is ParkLake sometimes empty? ParkLake (Sonae Sierra) runs a JS-challenge WAF that serves datacenter IPs an HTTP 202 challenge page for its REST API, sitemap and archive alike (verified 2026-08-13). From residential/proxy IPs the REST API returns ~223 stores with full detail; from Apify's default datacenter egress the mall contributes 0 records. The adapter tries curl_cffi fingerprint impersonation first, then the sitemap — and logs the WAF challenge honestly rather than faking data. If you need ParkLake coverage from the cloud, run the Actor with a residential proxy attached.

Is crawling respectful? Yes — robots.txt is honoured (ParkLake's crawl-delay: 5 is enforced for HTML paths), requests are paced and retried with backoff, and operator-owned public JSON APIs (NEPI's Strapi CMS, ParkLake's wp-json) are queried politely with small pages — these power their own websites and carry the same public store directories.

Why is is_closed false on my first run? is_closed becomes meaningful from the second run: a store present in the previous snapshot but absent now is flagged true. First runs are a baseline — that is the time-series design.

Can I filter by city or category? Post-filter the dataset — mall_city and category are first-class fields on every record.

How fresh is the data? Scraped live at run time, with first_seen/last_seen timestamps per record.