Programmatic SEO Turkey: How to Index 79,000 Pages?
How we created 79,000 separate pages for 79,000 doctor profiles on doktorbul.com, got them indexed by Google, and captured long-tail searches. Technical details, schema markup, sitemap strategy.
Programmatic SEO (pSEO) is the art of transforming a large database into SEO-friendly pages. Airbnb's "2 bedroom 1 bathroom homes in New York" pages, Tripadvisor's "restaurants open on Sunday in Istanbul" pages — all pSEO.
On doktorbul.com, we applied this technique to the Turkish market. 79,000 doctors + 15,000 city × specialty combinations = ~94,000 automatically generated landing pages. In this post, I'll explain how we did it.
1. Data: clean structure is essential
The first step is data cleaning. For pSEO to work:
- At least 8 fields per doctor: first name, last name, title, specialty, subspecialty, city, district, hospital
- 3-5 subspecialties per specialty
- Neighborhoods for each city
- Location + phone for each hospital
We pulled and merged data from 5 different sources (SHS, provincial health directorates, Google Maps API). Initial cleaning took 3 weeks — spelling variations, missing information, duplicates.
2. URL structure: careful design
URLs are the backbone of SEO. If you get them wrong, you break everything.
Bad example:
/doctor?id=12345&city=izmir
Good example (ours):
/dr-mehmet-yilmaz-kardiyoloji-izmir
/doktorlar/hastalik-kalp-yetmezligi/sehir-izmir/sayfa-1
/doktorlar/uzmanlik-kardiyoloji/sehir-izmir/sayfa-1
Rules:
- Every URL must be readable
- Trailing slash consistent (always present or always absent)
- Language character conversion (ı→i, ü→u, ş→s, etc.)
- No uppercase
- URLs should never change (unless redirected)
3. Template: DRY but not generic
The biggest trap: all pages having the same template. Google perceives this as "low-value content."
Solution: dynamic variation within the template.
On each doctor page:
- Required sections: name, specialty, hospital, location, contact
- Dynamic sections:
- FAQ section: Claude generates 5 specialty-specific questions for each doctor
- If the doctor has a specialty → "Dr. X's area of expertise..." paragraph - If the hospital has a known feature → "X Hospital is Turkey's first..." - Location feature → "In Izmir's Alsancak neighborhood..."
Result: each page is 40% common template, 60% unique content.
4. Schema.org markup: Person + MedicalOrganization for every page
{
"@context": "https://schema.org",
"@type": "Physician",
"name": "Dr. Mehmet Yılmaz",
"medicalSpecialty": "Cardiology",
"worksFor": {
"@type": "Hospital",
"name": "İzmir Üniversitesi Tıp Fakültesi Hastanesi"
},
"address": { "@type": "PostalAddress", "addressLocality": "İzmir" },
"availableService": [...]
}
Every page was validated in Google Rich Results Test for Schema.org.
5. Sitemap: how to submit 94,000 URLs?
Google has a 50,000 URL limit per sitemap. So we need 2 sitemaps.
Approach:
- sitemap.xml → index sitemap (redirects to sub-sitemaps)
- sitemap-doctors-1.xml → 0-50,000 doctors
- sitemap-doctors-2.xml → 50,001-79,000 doctors
- sitemap-diseases.xml → disease landing pages
- sitemap-specialties.xml → specialty landing pages
Each sitemap has a dynamic lastmod date — when doctor information is updated, the date refreshes. Google recrawls that page.
6. Internal linking: preventing page isolation
For a URL to reach Google, it needs links from other pages. How do you link to 94,000 pages?
Our system:
- Next to each doctor page: "Other doctors in the same specialty" + "Doctors in the same city" blocks
- Disease pages link to doctor pages
- City pages (e.g., /izmir-doktorlar) link to all Izmir doctors
Math: each doctor page receives an average of 15-20 internal links. No page is isolated.
7. Indexing: be patient
Google doesn't index 94,000 new URLs in a week. Our process:
- Month 1: 5,000 pages indexed
- Month 3: 35,000 pages indexed
- Month 6: 72,000 pages indexed
- Month 12: 89,000+ pages indexed
Patience + sitemap submission + manual index requests via "Inspect URL" in GSC for some pages. Low-authority pages can take 6+ months.
8. Results
After the first year:
- Organic traffic: 20K/month → 450K/month
- Indexed pages: 0 → 89,000
- Average position (Turkey): 12
- Long-tail clicks: 82% of total clicks
- Bounce rate: 61% (good for niche sector)
Applying to your own site
Programmatic SEO isn't suitable for every site. It works best when:
- You have a large database (1000+ records)
- Each record offers unique value
- Users are searching for specific information
If it fits your case, we can do a 30-minute potential assessment. Message me.
Want to apply one of the techniques from this post? Fill out a short form and we'll email you a free preview audit within 48 hours.