Romania Mall Store Directory — All Malls, Unified Schema
Pricing
from $3.00 / 1,000 store record extracteds
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
5 hours ago
Last modified
Categories
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 ready —
first_seen/last_seen/is_closedper 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"}
| Field | Type | Default | Description |
|---|---|---|---|
country | string | ro | Country code — only ro (Romania) is implemented |
malls | array | ["all"] | Mall ids to crawl, or ["all"] for the full directory |
includeAnchor | boolean | true | Set false to exclude anchor tenants |
extractDetails | boolean | false | Visit each store page for floor/phone/hours/email (slower, richer). NEPI and Băneasa always carry full detail |
output | string | json | json, 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: trueon 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 ApifyClientclient = 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.