InUrdu.pk Name & Vocabulary Meaning Lookup
Purpose
Look up the meaning of a personal name (Muslim / Pakistani / Arabic / Urdu) — or a thematic vocabulary word — on inurdu.pk and return its structured details: English meaning, Urdu-script meaning (e.g. عظیم), Roman-Urdu pronunciation, gender, syllable count, origin/history paragraphs (English + Urdu), and lucky attributes (number, color, alphabets, days, dates, hours, stones, metals). Read-only. The site is a public, server-side-rendered Astro static site fronted by Cloudflare with no observed anti-bot, login, captcha, or JS-only rendering — every field is in the initial HTTP response, so the optimal path is a direct HTTPS fetch with HTML parsing, not browser automation.
When to Use
- A user asks "what does the name X mean?" / "what is the Urdu meaning of X?" / "is X a boy or girl name?"
- A user wants the Urdu script (Nastaliq) rendering of a given English name.
- A user asks for "lucky" numerological details (lucky number, lucky color, stones, days) tied to a name.
- A user wants Roman-Urdu pronunciation for a name they have only seen written in English or Urdu.
- A user wants Urdu vocabulary for a thematic category (fruits, vegetables, body parts, colors, family relations, days, months, animals, etc.) — these live at
/{topic}-in-urdu/. - A user asks for the 99 Names of Allah in Urdu (
/names-of-allah-in-urdu/).
Do not use this skill for: dictionary translation of arbitrary English-to-Urdu sentences (the site only covers names + the curated vocab list), authoritative Islamic-jurisprudence rulings on naming, or numerology advice that goes beyond what the page literally states.
Workflow
The site exposes a search redirect that turns the lookup into a single HTTP round-trip. Use it. Browser automation is unnecessary overhead here.
-
Normalize the query. Lowercase the user-provided name and strip surrounding whitespace. Diacritics and non-ASCII characters can stay in the query string — the redirect handler matches case-insensitively against the canonical lowercase slug.
-
Hit the search redirect with a residential-proxied HTTPS GET, following at most one redirect:
GET https://www.inurdu.pk/?s={url-encoded-query}302 Location: /name/{slug}/→ the name exists. Follow the redirect (or fetch the location URL directly) to get the canonical name page.200 OKwith<h1>Uh oh, no results found</h1>in the body → the name is not in inurdu.pk's corpus. Return anoutcome: not_foundpayload to the caller and stop. Do not invent a meaning; the corpus is curated and missing-from-corpus is meaningful signal.301from the bare apexinurdu.pktowww.inurdu.pkis normal — always use thewww.host to skip it.
-
Fetch the canonical name page at
https://www.inurdu.pk/name/{slug}/(which may also be reached directly if the caller already knows the slug — same lowercase rules). Status200on success,404on a missing slug. -
Parse the HTML (server-rendered, no JS execution needed). Two reliable extraction strategies:
- Structured key/value rows under the overview card — each
<div class="explain-contents">contains<div class="explain-title">{Label}</div>and<div class="explain-subtitle">{Value}</div>. Labels observed:Name,Meaning,Urdu Meaning,Pronunciation,Gender,Syllables. - Lucky grid —
<div class="lucky-grid">contains<div class="lucky-item">children, each with<div class="lucky-label">+<div class="lucky-value">. Labels observed:Lucky Number,Lucky Color,Lucky Alphabets,Lucky Days,Lucky Dates,Lucky Hours,Supportive Numbers,Auspicious Stones,Auspicious Metals,Alternate Stones. - Long-form description — the
<h2>{Name} Name Details</h2>heading is followed by an English paragraph; the<h2>{Name} Name Details (Urdu)</h2>heading by an Urdu paragraph. Both live in<p class="overview-text-subheader">. - JSON-LD at
<script type="application/ld+json">carriesBreadcrumbList+Articleschema for the canonical URL + title — useful as a cross-check on the slug-to-name mapping.
- Structured key/value rows under the overview card — each
-
For vocabulary lookups (fruits, vegetables, colors, body parts, etc.), fetch
https://www.inurdu.pk/{topic}-in-urdu/directly. The list of available topics is in the footer of any page; an abbreviated set includes:alphabet,numbers,fruits,vegetables,family-relations,pronouns,vowels,consonants,days-of-the-week,months,islamic-months,seasons,dates,body-parts,emotions,dry-fruits,spices,sweets,drinks,foods,animals,plants,shapes,colors,greetings,occupations,diseases,flowers,birds,insects,clothes,vehicles,musical-instruments,weather,directions,time-words,riddles,proverbs,idioms. Each page renders an<div class="alpha-grid">of<div class="alpha-card">items, each containing<div class="alpha-name">(Urdu script),<div class="alpha-sound">English: <b>{English}</b></div>, and<div class="alpha-num">{Roman-Urdu transliteration}</div>. -
For browsing the whole name corpus (e.g. "give me a list of all girl names starting with A"), iterate
/names/{category}/page/{N}/where category ∈{muslim, boy, girl, arabic, urdu, pakistani, islamic}and N starts at 1. The<a href="/names/{category}/page/{N+1}/">Next Page</a>link inside<div class="paginate">terminates the iteration when absent. For exhaustive enumeration preferhttps://www.inurdu.pk/sitemap_index.xml, which fans out to ~40/name-sitemap{N}.xmlfiles listing every/name/{slug}/URL.
Browser fallback
Only fall back to a real browser if Cloudflare ever starts returning challenge pages (none seen during testing — cf-cache-status and a normal cloudflare server header are the only signs of CF). If needed:
sid=$(browse cloud sessions create --keep-alive --proxies | node -e "let s='';process.stdin.on('data',c=>s+=c).on('end',()=>process.stdout.write(JSON.parse(s).id))")
browse open "https://www.inurdu.pk/?s=azeem" --remote --session "$sid"
browse get markdown body --remote --session "$sid"
browse cloud sessions update "$sid" --status REQUEST_RELEASE
--verified is not required (no captcha encountered). --proxies is the safe default but the site responded normally from datacenter IPs as well during initial probes — keep proxies on if you're making many requests in a tight loop to avoid Cloudflare rate-limiting.
Site-Specific Gotchas
- Always use the
www.host. The apexhttps://inurdu.pk/issues a301tohttps://www.inurdu.pk/. Hard-coding thewww.form saves one round-trip and avoids tooling that doesn't follow the apex redirect cleanly. - Search is a redirect, not an API.
GET /?s=Ayeshareturns302 Location: /name/ayesha/. Configure your HTTP client to follow at most one redirect — chained redirects do not occur here, and unbounded redirect-following is a footgun on any site. - Slugs are lowercased. The user types
AyeshaorAYESHA; the canonical URL is/name/ayesha/. The search redirect handles the normalization for you; if you bypass search and hit/name/{slug}/directly, lowercase the slug first or you'll get404. - "No results" is a real, intentional outcome. When the search query has no match, the response is
200 OK(not 404) with a body that contains<h1 class="container-card-title">Uh oh, no results found</h1>and a "Page 1" indicator with zero result cards. Detecting "no results" by status code alone is wrong — match on the heading text or on the absence of.container-cardelements. - The corpus is curated, not algorithmic. If a name isn't on inurdu.pk, do not synthesize a meaning. Common Pakistani / Arabic / Urdu names are well-covered (Azeem, Ayesha, Fatima, Hassan, Ali, etc.) but Western names and uncommon transliterations may legitimately be missing.
- Urdu-meaning field is comma-separated, in Urdu script. E.g. for Azeem:
عظیم، معزز، ممتاز. The separator is an Arabic comma (U+060C,،), not an ASCII comma. Don't naivelysplit(",")— split on[،,]or just present the field as-is. - Gender is a free-text field, not an enum. Values observed:
boy,girl, and (for unisex names like "Azer") both👧👦emojis on listing cards. The detail page's.explain-subtitleunderGendercarries a single token; if both genders apply the site typically creates two separate slugs (e.g./name/azer/shows both). Treat the field as a string. - Lucky-info fields are not always all present. Newer or sparser entries may omit
Auspicious MetalsorAlternate Stones— code defensively against missing.lucky-itemrows. - Pagination is
/names/{category}/page/{N}/, not?page=N. Hitting/names/muslim/?page=2works for a few categories but is not the canonical form; always use the path segment style emitted by the site's own "Next Page" anchor. - The site emits
noindexon combinatorial filter pages with zero results per/robots.txt. Those URLs still return200HTML, but they are not part of the canonical corpus and shouldn't be cached as authoritative. - JS execution is not required for any field on this skill's target pages — every value lives in the initial HTML. Driving a browser is pure overhead unless Cloudflare ever interposes a challenge.
- No public JSON API exists. All
/api/*and similar guess-paths return the site's 404. The HTML + sitemap.xml are the only data surfaces. Don't waste time searching for a JSON endpoint.
Expected Output
Successful name lookup (outcome: found):
{
"outcome": "found",
"query": "Azeem",
"url": "https://www.inurdu.pk/name/azeem/",
"name": "azeem",
"meaning_english": "great, noble, outstanding",
"meaning_urdu": "عظیم، معزز، ممتاز",
"pronunciation": "uh-zeem",
"gender": "boy",
"syllables": 2,
"description_english": "The name Azeem has Arabic origins and is commonly used in Muslim cultures. It carries the meaning of 'great,' 'noble,' or 'outstanding,' symbolizing strength and importance. Azeem is often seen as a powerful and impactful name, embodying qualities of leadership and distinction.",
"description_urdu": "عظیم نام کی اصل عربی ہے اور عام طور پر مسلم ثقافتوں میں استعمال ہوتی ہے۔ یہ 'عظیم،' 'عظیم،' یا 'باقی،' طاقت اور اہمیت کی علامت کے معنی رکھتا ہے۔",
"lucky": {
"number": "3",
"color": "Yellow",
"alphabets": "C, L, U",
"days": "Tuesday, Thursday, Saturday",
"dates": "3, 12, 21, 30",
"hours": "9, 12",
"supportive_numbers": "2, 6",
"auspicious_stones": "Tiger's Eye, Yellow Topaz",
"auspicious_metals": "Tin, Mercury",
"alternate_stones": "Golden Calcite, Yellow Jasper"
}
}
Name not in corpus (outcome: not_found):
{
"outcome": "not_found",
"query": "NotARealName123",
"url": "https://www.inurdu.pk/?s=NotARealName123",
"message": "We could not find any names for the term: NOTAREALNAME123. Please try another name."
}
Vocabulary-page lookup (outcome: vocabulary):
{
"outcome": "vocabulary",
"topic": "fruits",
"url": "https://www.inurdu.pk/fruits-in-urdu/",
"items": [
{ "english": "Apple", "urdu": "سیب", "roman": "Seb" },
{ "english": "Apricot", "urdu": "خوبانی", "roman": "Khubani" },
{ "english": "Avocado", "urdu": "ایوکاڈو", "roman": "Avocado" },
{ "english": "Banana", "urdu": "کیلا", "roman": "Kela" }
]
}
Listing-page lookup (outcome: listing):
{
"outcome": "listing",
"category": "muslim",
"page": 1,
"url": "https://www.inurdu.pk/names/muslim/",
"next_page": "https://www.inurdu.pk/names/muslim/page/2/",
"names": [
{ "name": "Ghafr", "gender": "boy", "pronunciation": "gah-fer", "url": "https://www.inurdu.pk/name/ghafr/" },
{ "name": "Maahlaqa", "gender": "girl", "pronunciation": "maah-la-ka","url": "https://www.inurdu.pk/name/maahlaqa/" }
]
}