Local SEO for Moroccan Businesses: A Practical Guide
How to rank for the searches that bring paying customers in Casablanca, Marrakech and Rabat — including the bilingual details most guides skip.
Ranking nationally for a broad keyword is expensive and often worthless. Ranking for "plombier Casablanca" when someone needs a plumber in Casablanca is the entire game. Here is what actually moves local rankings in Morocco.
Start with your Google Business Profile
For local searches, your Business Profile outranks your website in the results that matter — the map pack sitting above the organic links. It is free, and it is consistently the highest-return hour of work available to a local business.
Complete every field. Not most of them, every one:
- Exact business name, no keyword stuffing — Google penalises "Plomberie Casablanca Pas Cher" as a business name
- Precise category, plus secondary categories
- Real opening hours, updated for Ramadan and public holidays
- Phone number in international format:
+212 5 22 XX XX XX - Photos of the actual premises, updated quarterly
Then ask for reviews, consistently, and reply to every one. Review count and recency are ranking factors, and the reply is read by the next customer deciding whether to call you.
Get your NAP identical everywhere
Name, Address, Phone. Google cross-references these across the web to decide whether it believes your business exists where you say it does. Inconsistency dilutes that confidence.
The most common failure: writing your phone number four different ways. 0522 XX XX XX, +212522XXXXXX, 05-22-XX-XX-XX and (212) 522 XX XX XX are, to a crawler, potentially four different businesses. Pick one format and use it on your site, your Business Profile, your social pages and every directory.
Decide your language strategy deliberately
This is where most Moroccan sites lose ground, because they never make an explicit decision.
Your customers search in French, in Arabic, in Darija transliterated into Latin characters, and sometimes in English. You cannot serve all of that from one undifferentiated page.
If you publish in more than one language, give each version its own URL — /fr/services and /ar/services, not one page that swaps text with JavaScript. Then declare the relationship with hreflang tags so Google knows they are translations rather than duplicates:
<link rel="alternate" hreflang="fr-MA" href="https://example.ma/fr/services" />
<link rel="alternate" hreflang="ar-MA" href="https://example.ma/ar/services" />
<link rel="alternate" hreflang="x-default" href="https://example.ma/fr/services" />
Translate properly. Machine-translated Arabic reads as machine-translated Arabic, and it costs you the trust you were trying to build.
Add LocalBusiness structured data
Structured data tells search engines what your pages mean rather than leaving them to guess. For a local business this is not optional — it feeds the knowledge panel and the rich results.
{
"@context": "https://schema.org",
"@type": "LocalBusiness",
"name": "Your Business",
"address": {
"@type": "PostalAddress",
"addressLocality": "Casablanca",
"addressRegion": "Casablanca-Settat",
"addressCountry": "MA"
},
"telephone": "+212522XXXXXX",
"openingHours": "Mo-Fr 09:00-18:00",
"priceRange": "$$"
}
Validate it with Google's Rich Results Test before you ship. A malformed block is worse than no block.
Build pages for places, not one page for everywhere
If you serve three cities, one page listing all three will rank for none of them. Build a genuine page per city with real, specific content — local references, local projects, local contact details. Three near-identical pages with the city name swapped is duplicate content, and Google has been detecting that pattern for well over a decade.
What to measure
Set up Google Search Console on day one, before you make any changes. Watch queries and impressions rather than the vanity ranking number, because results are personalised and location-dependent — the position you see is not the position your customer sees.
Local SEO compounds slowly. Expect three to six months before the trend is unambiguous, and be sceptical of anyone who promises otherwise.