Mobile Deep Link Association Monitor
Pricing
from $2.00 / 1,000 monitor rows
Mobile Deep Link Association Monitor
Monitor public Apple AASA and Android assetlinks files for mobile universal-link/app-link association drift.
Pricing
from $2.00 / 1,000 monitor rows
Rating
0.0
(0)
Developer
Defenestrator
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
18 days ago
Last modified
Categories
Share
Monitor public Apple Universal Links and Android App Links association files for release, growth, and security regressions.
This Actor checks each public domain for:
- Apple
apple-app-site-associationfiles at/.well-known/apple-app-site-associationand/apple-app-site-association. - Android Digital Asset Links files at
/.well-known/assetlinks.json. - JSON parseability, HTTP status, redirects, content-type signals, association counts, app IDs, package names, signing certificate fingerprints, path rules, Android 15 dynamic rules, and semantic drift against a previous run snapshot.
It is designed for scheduled monitoring. Run it once to capture a baseline, then paste OUTPUT.snapshot into the next run or scheduled task to alert on changed app IDs, package names, certificate fingerprints, path rules, dynamic rules, broken files, or missing expected associations.
Why teams run it repeatedly
Universal Links and App Links can silently break after web deploys, CDN changes, app ID/package changes, certificate rotations, marketing-domain migrations, or mobile-release changes. A normal website uptime monitor can say the domain is up while iOS or Android link verification is broken. This Actor produces decision-ready rows for mobile QA, growth, lifecycle marketing, and app-security teams.
Input
targets: public domains or URLs. URLs are accepted, but only their public host is used.platforms:ios,android, or both.targetExpectations: optional JSON keyed by domain, for example:
{"www.example.com": {"iosAppIds": ["TEAMID.com.example.app"],"androidPackageNames": ["com.example.app"],"androidSha256Fingerprints": ["AA:BB:CC:..."]}}
previousSnapshotorpreviousSnapshotJson: copy from a prior run'sOUTPUT.snapshotto enable drift alerts. Malformed, incomplete, or duplicate-key snapshot rows fail the run instead of silently disabling comparison.includeAllRows: keep true for complete baseline exports. When false, only alert/error rows are written andOUTPUT.snapshotintentionally contains only those billed rows, so it is not a complete next-run baseline.
Output rows
Each dataset row represents one target domain and platform file. Important fields include:
domain,platform,fileType,finalUrl,statusCode,redirectCount.iosAppIds,androidPackageNames,androidSha256Fingerprints,relationNames.pathRuleCount,componentsRuleCount,dynamicRuleCount.changedSincePrevious,changedFields,missingExpected,semanticHash.alert,priority,riskScore,alertReasons,recommendedAction.
OUTPUT.snapshot contains compact rows suitable for the next run's previousSnapshot input.
Safety and limitations
- Only public HTTP(S) destinations are supported. Localhost, private, link-local, multicast, documentation, and other reserved IP destinations are blocked; each request and redirect connects only to the exact public addresses validated for that hop.
- The Actor does not log in, use a browser, call App Store / Play Console APIs, or verify app entitlements/manifests. It validates public website association files only.
- Apple and Google are trademarks of their respective owners. This Actor is unofficial and is not affiliated with Apple, Google, Android, or any monitored domain.
- Do not submit private, internal, confidential, or VPN-only hostnames.
Pricing
Buyer-unit price: $2.00 per 1,000 domain/platform association rows written to the default dataset, plus the $0.00005 run-start event.
This Actor uses Apify Pay Per Event (PPE) pricing:
apify-actor-start:$0.00005per run start.apify-default-dataset-item:$0.002per dataset row (Monitor row).- Platform usage is included in the event price; users do not pay a separate platform-usage pass-through.
- A dataset row is exactly one emitted domain/platform result. With
includeAllRows=false, clean non-alert checks are not emitted or item-charged. - The Actor checks the PPE charge result, stops before further source work when the dataset-item charge limit is reached, and reports intended versus actually written rows.
Use Apify's max total charge setting before starting a run if you want a hard spend cap.