Go to Apify Store
User picture

Mohanad Alshaka

dottti

I build data actors on official endpoints rather than scraped page layouts, with real rate-limit handling and a test suite behind each one.

ACTOR STATS

10 public Actors

19 total users

1 monthly user

>99% runs succeeded

What I build

Data actors for sources that other tools quietly get wrong.

Three rules I hold to:

Official endpoints over scraped layouts. Where a platform publishes structured data, I read that instead of parsing a page. A theme change or a redesign doesn't take the actor down with it.

A throttle is not an empty result. These sources answer bursts with HTTP 429 and often serve an HTML challenge page instead of JSON. My actors back off exponentially, honour Retry-After, and refuse to report a throttled page as "no data found". Silent partial results are worse than a visible error.

Arabic is handled, not mangled. Many Arabic sources publish text in Unicode Presentation Forms-B. It looks identical on screen and is a different set of code points, so a plain keyword search over the raw feed silently drops matching records. I normalise before matching and keep the original wording in every record so it stays traceable to the source.

Beyond that: every row in a dataset carries the same fields, so CSV exports stay rectangular. Personal data that appears in a source but has no bearing on the result gets dropped before it reaches your dataset. Each actor ships with tests, including ones that assert a defect exists before asserting the fix.

Published

  • Shopify Catalogue & Price Change Monitor - track competitor stores and get only what moved since the last run
  • Etimad Tender Radar - live Saudi government tenders, Arabic-safe filtering
  • Etimad Pre-Planning Radar - what Saudi agencies plan to procure before it reaches tender

Bug reports and feature requests through the Issues tab on any actor.

Public Actors