URL Resolver & Enricher avatar

URL Resolver & Enricher

Pricing

from $1.00 / 1,000 results

Go to Apify Store
URL Resolver & Enricher

URL Resolver & Enricher

Resolves redirects, strips tracking parameters, and enriches URLs with Open Graph metadata, language, and content type. Bulk-ready and proxy-capable.

Pricing

from $1.00 / 1,000 results

Rating

0.0

(0)

Developer

Aleksandr Dvorzhitckii

Aleksandr Dvorzhitckii

Maintained by Community

Actor stats

1

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Categories

Share

URL Resolver & Enricher is a high-performance, cost-effective Apify Actor that expands shortened links, resolves complex multi-hop redirect chains, cleans invasive tracking parameters, and enriches URLs with page metadata (Open Graph tags, content type, language, favicon) — all in a single pass.


🎯 Why You Need This

When building web scrapers, data pipelines, CRM integrations, or marketing analytics datasets, you frequently encounter raw, "dirty" URLs:

  • Shortened links: bit.ly, t.co, tinyurl.com, youtu.be, amzn.to that hide the real destination.
  • Tracking & Affiliate bloat: invasive query strings like utm_*, fbclid, gclid, Amazon affiliate tags, social media referrer IDs that break deduplication and privacy.
  • Search engine wrappers: google.com/url?q=... redirects that don't need real HTTP roundtrips.
  • Missing context: raw links lack title, preview image, language, or content classification.

URL Resolver & Enricher solves all of this automatically: it normalizes URLs, strips unwanted parameters, and turns links into rich, structured content cards.


✨ Key Features

  1. Lightweight & Fast (HEAD-first):
    • Follows HTTP redirects using lightweight HEAD requests without downloading page bodies.
    • Falls back to GET only when encountering HTML meta refresh or JavaScript redirects.
  2. Instant Google Redirect Unpacking:
    • Detects google.com/url?q=... links and resolves them instantly in-memory with zero network overhead.
  3. Deep Parameter Sanitization:
    • Strips 180+ known tracking, analytics, and affiliate parameters:
      • Google Analytics / Ads (utm_*, gclid, gbraid, wbraid)
      • Meta / Facebook (fbclid, fb_action_*, fb_source)
      • Social trackers (Twitter, TikTok, Reddit, Medium, LinkedIn)
      • Affiliate & Marketplace tags (Amazon tag, ref_, pd_rd_*, creative, qid, eBay, ShareASale)
    • Preserves all legitimate application parameters (e.g. v for YouTube videos, search queries, pagination).
  4. Smart Metadata Enrichment:
    • Downloads only the first 64 KB (configurable) of HTML to extract <head> tags without loading full pages or media.
    • Extracts:
      • Open Graph: og:title, og:description, og:image, og:site_name, og:type
      • Page language from <html lang>, og:locale, or linguistic heuristics
      • Inferred content type: article, video, product, social, audio, or webpage
      • Publication time (article:published_time)
      • Website favicon
  5. Apify Residential Proxy Integration:
    • One-click toggle (use_proxy: true) routes requests through Apify Residential Proxies with optional country selection (proxy_country: "US").
  6. Anti-Bot Browser Impersonation:
    • Built-in support for TLS fingerprint mimicry (curl_cffi Chrome/Safari impersonation) to resolve antibot-protected websites (Cloudflare, Akamai).

📥 Input Parameters

ParameterTypeDefaultDescription
urlstringSingle URL to process
urlsarrayList of URLs to process (automatically deduplicated)
enrichbooleantrueExtract Open Graph tags and page metadata
use_proxybooleanfalseEnable Apify Residential Proxy
proxy_countrystring2-letter ISO country code for proxy (e.g. US, DE, GB)
concurrencyinteger10Number of simultaneous concurrent requests (1–50)
max_redirectsinteger5Maximum redirect hops to follow per URL
timeout_secinteger15Request timeout per URL in seconds
head_bytesinteger65536Maximum bytes to fetch for <head> parsing (default: 64 KB)
impersonatebooleanfalseUse browser TLS fingerprint impersonation

Example Input (INPUT.json)

{
"urls": [
"https://youtu.be/dQw4w9WgXcQ?feature=shared",
"https://www.google.com/url?q=https://www.apify.com/",
"https://www.amazon.com/dp/B08N5WRWNW?tag=myaffiliate-20&ref_=as_li_ss_tl",
"https://www.bbc.com/news/world-us-canada-68542388?at_medium=custom7"
],
"enrich": true,
"use_proxy": false,
"concurrency": 10
}

📤 Output Dataset Format

Every resolved URL is pushed to the default Apify Dataset in structured format:

{
"input_url": "https://youtu.be/dQw4w9WgXcQ?feature=shared",
"final_url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
"clean_url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
"http_status": 200,
"redirect_chain": [
"https://youtu.be/dQw4w9WgXcQ?feature=shared",
"https://www.youtube.com/watch?v=dQw4w9WgXcQ"
],
"redirect_count": 1,
"removed_params": ["feature"],
"removed_count": 1,
"og_title": "Rick Astley - Never Gonna Give You Up (Official Music Video)",
"content_type": "video",
"lang": "en"
}

Output Schema Fields

  • input_url: The original input URL.
  • final_url: The destination URL after following all redirect hops.
  • clean_url: The destination URL with all tracking/affiliate parameters stripped.
  • http_status: HTTP response status code (e.g. 200, 404, 301).
  • redirect_chain: Full list of intermediate URLs in the redirect chain.
  • redirect_count: Total number of redirects followed.
  • removed_params: List of query parameter names removed.
  • removed_count: Number of removed query parameters.
  • og_title: Page Open Graph title.
  • og_description: Page Open Graph description.
  • og_image: Primary preview image URL.
  • og_site_name: Website name.
  • og_type: Raw Open Graph type.
  • content_type: Inferred category (article, video, product, social, audio, webpage).
  • lang: Detected language code (e.g. en, ru, es).
  • published_time: Article publication timestamp if available.
  • favicon: Website favicon URL.
  • fetch_error: Non-fatal error during enrichment (e.g. http_404, timeout).
  • error: Fatal error during URL resolution.

💰 Monetization & Pricing

  • Pay per event: $0.001 per resolved URL ($1.00 per 1,000 URLs).
  • Only successfully resolved and enriched URLs are charged.
  • Zero extra fees for uncharged or failed links.

🛠️ Usage via Apify API / Python Client

from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run_input = {
"urls": [
"https://t.co/example",
"https://bit.ly/example"
],
"enrich": True
}
run = client.actor("dvorzhik/url-resolver-enricher").call(run_input=run_input)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["clean_url"], item.get("og_title"))