Magicbricks Property Search Scraper avatar

Magicbricks Property Search Scraper

Under maintenance

Pricing

from $4.99 / 1,000 results

Go to Apify Store
Magicbricks Property Search Scraper

Magicbricks Property Search Scraper

Under maintenance

Scrape property listings from Magicbricks.com. Supports filtering by city, property type, BHK, budget, posted by, and more.

Pricing

from $4.99 / 1,000 results

Rating

0.0

(0)

Developer

Coding Frontned

Coding Frontned

Maintained by Community

Actor stats

0

Bookmarked

36

Total users

0

Monthly active users

8 hours ago

Last modified

Share

Scrapes publicly rendered Magicbricks property-search result pages with a bounded Crawlee HTML workflow. The Actor uses the page's public HTML; it does not solve CAPTCHAs, bypass login, call private APIs, spoof fingerprints, or inject stealth scripts.

Inputs

searchUrls is the preferred input. It accepts up to 20 HTTPS Magicbricks search URLs, including URLs with filters already applied.

FieldTypeDefaultDescription
searchUrlsarrayPublic search URLs.
startUrls, sourceUrls, urls, urlarray/stringBackward-compatible aliases for searchUrls; provide only one alias.
maxPropertiesPerSearchinteger100Maximum normal property records per search URL. maxItems and maxProducts are accepted aliases.
maxPagesinteger5Maximum bounded scroll/pagination cycles per URL.
includeDiagnosticsbooleanfalseEmit minimal {url,error,errorCode,scrapedAt} rows for empty/failed pages.
requestDelayMsinteger250Delay before each public HTML request, from 0 to 5000 ms.
requestTimeoutSecsinteger120Public HTML request timeout, from 10 to 180 seconds.
maxRequestRetriesinteger2Bounded crawler retries, from 0 to 3.
maxConcurrencyinteger1Public-request concurrency, from 1 to 3.
fixtureHtml / fixtureFilestringLocal QA mode; parses fixture HTML instead of making a network request. Use only one.
fixtureSourceUrlstringOptional Magicbricks source context for fixture records.
proxyConfigurationobjectdisabledOptional standard Apify Proxy configuration.
proxyobjectBackward-compatible alias for proxyConfiguration.

Example input:

{
"searchUrls": [
"https://www.magicbricks.com/property-for-sale/residential-real-estate?proptype=Multistorey-Apartment&cityName=Mumbai&language=en"
],
"maxPropertiesPerSearch": 25,
"maxPages": 3,
"includeDiagnostics": true
}

Dataset output

Each normal row keeps the Actor's existing rich property fields and adds stable/provenance fields:

  • recordType: magicbricksProperty
  • recordId: same source property identifier as propertyId
  • sourceDomain, sourceUrl, searchUrl, pageUrl
  • pageNumber, position, and ISO scrapedAt
  • existing price, area, location, project, seller, amenity, media, status, and date fields

Image fields contain only absolute HTTP(S) image URLs from Magicbricks image hosts and common image extensions; logo/icon/sprite-like assets are excluded. Missing optional values are omitted rather than replaced with fabricated commercial facts.

Diagnostic rows are opt-in and deliberately minimal:

{
"url": "https://www.magicbricks.com/...",
"error": "No public Magicbricks listing records were found on the page.",
"errorCode": "NO_RESULTS",
"scrapedAt": "2026-09-09T00:00:00.000Z"
}

The OUTPUT_SUMMARY key-value record reports run status, normal/diagnostic counts, failed requests, limits, proxy usage, and elapsed time. OUTPUT remains available as the compatibility summary key.

Local development

npm ci --ignore-scripts --no-audit --no-fund
npm test
npm run lint
npm run check
npm run validate

The lint script is a bounded JavaScript syntax check for this legacy Actor; it does not scan the repository root. npm run validate checks existing local dataset files. Use an isolated APIFY_LOCAL_STORAGE_DIR for a clean QA run so older shared storage is not overwritten or silently migrated.

Code structure

  • src/actor.js owns Apify lifecycle and error handling.
  • src/runner.js validates input, fetches public HTML with bounded retries, extracts result cards, and writes summaries.
  • src/pagination.js contains the bounded scroll behavior used to request additional public result batches.
  • src/property.js normalizes and validates rich listing records, filters media, and adds provenance.
  • test/property.test.js covers the normalization/output contract.
  • validate-datasets.js checks local rows for required identity/provenance fields and forbidden transport/debug metadata.

Limitations

Magicbricks may vary result-card markup, return no rows, or require a normal user interaction before results are rendered. The Actor records an opt-in diagnostic for these cases and does not attempt CAPTCHA or access-control bypass. Pagination is best-effort and bounded by maxPages.