# Guichet Scraper (`aboo.script/guichet-scraper`) Actor

Scrape Guichet.com events in Morocco with dates, venues, organizers, ticket categories, and prices.

- **URL**: https://apify.com/aboo.script/guichet-scraper.md
- **Developed by:** [Aboo Script](https://apify.com/aboo.script) (community)
- **Security:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.10 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Guichet Scraper

![Guichet Scraper](https://i.ibb.co/39K55Kfs/guichet-banner.png)

**Guichet Scraper** extracts events from [Guichet.com](https://guichet.com/ma-fr), Morocco's leading online ticketing platform, into clean, structured data you can download as JSON, CSV, Excel, or HTML. Paste a Guichet page or type a few keywords, and get the event title, date, venue, city, organizer, every ticket category with its price and availability, images, and description for every event. No account or login required.

### Introduction

[Guichet.com](https://guichet.com/ma-fr) is a Moroccan box office that sells tickets for concerts, festivals, theatre and comedy, sports, family activities, fairs, and parties in Casablanca, Rabat, Marrakech, Fès, Tangier, Agadir, and other cities. Its listings show what is on in Morocco, who organizes it, where it takes place, and how much it costs.

This actor collects the same public information you see in your browser and turns it into a ready-to-use dataset. You can run it once, schedule it to run daily, or connect it to your own tools.

### What data can you extract from Guichet?

- 🎟️ Event title, reference, category, and status (sold out, cancelled, sales closed)
- 📅 Start date and time, date text for multi-day events, doors opening and closing time
- 📍 Venue, address, zip code, city, and map coordinates
- 💲 Starting price, old price, lowest and highest ticket price in Moroccan dirham (MAD)
- 🧾 Every ticket category with its name, description, price, old price, quantity limits, and availability
- 🏢 Organizer name, organizer page, and logo
- 📝 Summary and full event description as plain text
- 🖼️ Cover image and gallery images
- 🪑 Seat map flag, external ticket link, and WhatsApp booking option with its fee
- 🔗 Direct URL to each event

### Use Cases

- 📈 **Market research**: follow ticket prices and the mix of concerts, festivals, and shows across Moroccan cities.
- 🕵️ **Competitor monitoring**: see which events organizers and venues put on sale, at what price, and which ticket categories sell out.
- 🗓️ **Event listings and guides**: feed an events calendar, a city guide, or a newsletter with up-to-date Moroccan events.
- 🤝 **Lead generation**: build a list of event organizers and venues active in Morocco.
- 🤖 **AI and automation**: feed clean, structured data into spreadsheets, dashboards, or AI workflows.

### How to scrape Guichet step by step

1. Paste one or more Guichet URLs into **Start URLs**, or type keywords into **Search queries**.
2. Set **Maximum number of results** to how many events you want per URL or per query.
3. Optionally narrow your search queries with **Categories**, **Cities**, **From date**, **To date**, and **Include past events**.
4. Click **Start** and wait for the run to finish.
5. Download your data in JSON, CSV, Excel, or HTML from the **Output** tab.

### Input

- **Start URLs**: Guichet URLs to scrape. Supported pages: the home page (`https://guichet.com/ma-fr`), category pages (for example `https://guichet.com/ma-fr/event/concerts`), organizer pages (`https://guichet.com/ma-fr/event/producer/...`), search pages (`https://guichet.com/ma-fr/event?search=...`), and single event pages. List pages return upcoming events first, then past events, just like the website.
- **Search queries**: keywords to search on Guichet, one per line, like the search box on the site (event title, artist, venue). Each query is scraped separately.
- **Maximum number of results**: how many events to collect for each start URL or search query. Set `0` for no limit.
- **Categories**: only return events in these categories, such as Concerts, Festivals, Theatre & Comedy, or Sport. Applies to search queries only.
- **Cities**: only return events in these cities, for example `Casablanca` or `Marrakech`. Use the full city name; accents are optional, so `Fes` also finds `Fès`. Applies to search queries only.
- **From date** and **To date**: only return events within this date range. Applies to search queries only.
- **Include past events**: also return past events after the upcoming ones. By default search queries return upcoming events only.

You can use start URLs, search queries, or both in the same run.

### Input Examples

Scrape the latest events from the Guichet home page:

```json
{
  "startUrls": [{ "url": "https://guichet.com/ma-fr" }],
  "maxResults": 5
}
```

Search for upcoming concerts and comedy shows in Casablanca in November:

```json
{
  "searchQueries": ["casablanca"],
  "categories": ["concerts", "theatre-humour"],
  "cities": ["Casablanca"],
  "startDate": "2026-11-01",
  "endDate": "2026-11-30",
  "includePastEvents": false,
  "maxResults": 5
}
```

### Output

Each event is saved as one item in the dataset. Here is an example of a single item:

```json
{
  "url": "https://guichet.com/ma-fr/event/festivals/vendredi-27-juin-hoba-hoba-spirit-fehd-benchemsi-4620",
  "id": 4620,
  "reference": "MAEV004620",
  "title": "Vendredi 27 Juin - Hoba Hoba Spirit & Fehd Benchemsi",
  "category": "Festivals",
  "categorySlug": "festivals",
  "startDate": "2025-06-27T23:30:00+01:00",
  "dateText": null,
  "startTime": "23:30",
  "openingTime": "19:00",
  "closingTime": "21:30",
  "status": "Sales Closed",
  "isAvailable": false,
  "isFree": false,
  "price": 200,
  "oldPrice": null,
  "priceMin": 200,
  "priceMax": 500,
  "currency": "MAD",
  "offers": [
    {
      "id": 11125,
      "name": "GOLD",
      "description": null,
      "price": 200,
      "oldPrice": null,
      "minQuantity": 1,
      "maxQuantity": null,
      "isAvailable": false
    },
    {
      "id": 11126,
      "name": "VIP",
      "description": null,
      "price": 300,
      "oldPrice": null,
      "minQuantity": 1,
      "maxQuantity": null,
      "isAvailable": false
    },
    {
      "id": 11127,
      "name": "BLACK",
      "description": null,
      "price": 500,
      "oldPrice": null,
      "minQuantity": 1,
      "maxQuantity": null,
      "isAvailable": true
    }
  ],
  "venue": "La Casablancaise - Parc de la ligue Arabe",
  "address": null,
  "address2": null,
  "zipCode": null,
  "city": "Casablanca",
  "latitude": null,
  "longitude": null,
  "organizer": "Casablanca Music Week",
  "organizerUrl": "https://guichet.com/ma-fr/event/producer/casablanca-music-week",
  "organizerLogo": "https://cdnv2.guichet.com/public/producers/logos/B1LHhzN3LZjyKjWAJZnmOADKoIAlQWlHKoTrdQn9.jpg?v=1746465456",
  "image": "https://cdnv2.guichet.com/public/events/covers/7FDGgzK6NiB0pqIhuvANyEzNm8kjf09bFgtUfBi6.png?v=1748170411",
  "images": [
    "https://cdnv2.guichet.com/public/events/images/mcJV9mt7z0KlspHCMJZXMSUIyYqcPAWiMWp2hx1I.jpg?v=1746654574"
  ],
  "hasSeatMap": false,
  "externalTicketUrl": null,
  "whatsappBooking": true,
  "whatsappFee": 7,
  "summary": null,
  "description": "Fusion Live : Fehd Benchemsi & Hoba Hoba Spirit enflamment Casablanca Music Week !\n\nCasablanca Music Week a le plaisir d’annoncer une soirée exceptionnelle placée sous le signe de la fusion et de l’én..."
}
```

You can download the dataset in JSON, CSV, Excel, XML, or HTML, or access it through the Apify API.

### Notes

- Only event pages are supported. Cinema, travel, and store pages of Guichet are skipped with a warning.
- Event titles and descriptions are in the language the organizer used on the site, usually French.
- Prices are in Moroccan dirham (MAD). `price` is the "from" price shown on the event card, while `priceMin` and `priceMax` are calculated from all ticket categories.
- For events that run over several days, the date range shown on the site is returned in `dateText`.
- Category, city, and date filters apply to search queries only, because the website does not keep them in its page URLs.
- Some events do not show an address, map location, or ticket category description, so these fields are returned as `null`.
- Works on Cloudflare-protected pages, no proxy needed.

### Why use the Guichet Scraper?

- ✅ **No login needed**: works with public data only, so there is no account to manage.
- 🎯 **Every ticket category**: get the full price list of each event, not only the starting price.
- 🧹 **Clean data**: numbers are real numbers, dates use one standard format, and text is free of HTML.
- 💸 **Pay for what you need**: set a result limit per URL or query and keep every run small and cheap.
- 🔄 **Ready for automation**: schedule runs, export to Google Sheets, or connect to Make, Zapier, and n8n.

### FAQ

#### How many results can I scrape?

You can set any number in **Maximum number of results**, or `0` for no limit. The actor keeps going until it reaches your limit or runs out of events.

#### Do I need a Guichet account?

No. The actor only collects publicly available data. You do not need to log in or provide any account details.

#### Can I get past events?

Yes. Category, organizer, home, and search pages return past events after the upcoming ones. For search queries, turn on **Include past events**.

#### Can I scrape data on a schedule?

Yes. Use Apify Schedules to run the actor every hour, day, or week, and get fresh data automatically.

#### Can I request a new feature or filter?

Yes. Right now the actor supports start URLs, search queries, and category, city, and date filters. If you need other inputs, such as cinema or travel listings, get in touch and they can be added.

#### Can I get a custom or private version?

Yes. The actor can be customized for your workflow, delivered as a private version, or a new scraper can be built for a different website. Use the contact details below.

### Need to scrape other event ticketing platforms?

- [Webook Scraper - Events & Experiences](https://apify.com/aboo.script/webook-scraper): events, experiences, and ticket prices from Webook.
- [Virgin Megastore Tickets Scraper](https://apify.com/aboo.script/tickets-virginmegastore-me-scraper): events and ticket prices from Virgin Megastore Tickets in the Middle East.
- [Etihad Arena Scraper](https://apify.com/aboo.script/etihadarena-ae-scraper): concerts and shows at Etihad Arena in Abu Dhabi with ticket prices.
- [Fever Scraper - Events & Experiences](https://apify.com/aboo.script/feverup-scraper): events and experiences from Fever in cities worldwide.
- [Ticketmaster Scraper](https://apify.com/aboo.script/ticketmaster-scraper): events, venues, and ticket prices from Ticketmaster.

***

**Need help or want a custom solution?**

- 📧 Email: aboo.script@gmail.com
- 🧩 More scrapers: [Apify profile](https://apify.com/aboo.script)

### Image Credit

Image credit: [Guichet.com](https://guichet.com/ma-fr)

# Actor input Schema

## `startUrls` (type: `array`):

Guichet.com URLs to start with: the home page, a category page (e.g. https://guichet.com/ma-fr/event/concerts), an organizer page (https://guichet.com/ma-fr/event/producer/...), a search page (https://guichet.com/ma-fr/event?search=...) or an event page. List pages return upcoming events first, then past events, like the website.

## `searchQueries` (type: `array`):

Keywords to search on Guichet.com, like the site search (event title, artist, venue). Each query is scraped separately.

## `maxResults` (type: `integer`):

Maximum number of events to scrape per start URL or search query. Set 0 for no limit.

## `categories` (type: `array`):

Only return events in these categories. Applies to search queries only.

## `cities` (type: `array`):

Only return events in these cities, e.g. Casablanca, Rabat, Marrakech. Use the full city name; accents are optional. Applies to search queries only.

## `startDate` (type: `string`):

Only return events on or after this date (YYYY-MM-DD). Applies to search queries only.

## `endDate` (type: `string`):

Only return events on or before this date (YYYY-MM-DD). Applies to search queries only.

## `includePastEvents` (type: `boolean`):

Also return past events after the upcoming ones. Applies to search queries only.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://guichet.com/ma-fr"
    }
  ],
  "maxResults": 5,
  "includePastEvents": false
}
```

# Actor output Schema

## `overview` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "startUrls": [
        {
            "url": "https://guichet.com/ma-fr"
        }
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("aboo.script/guichet-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "startUrls": [{ "url": "https://guichet.com/ma-fr" }] }

# Run the Actor and wait for it to finish
run = client.actor("aboo.script/guichet-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "startUrls": [
    {
      "url": "https://guichet.com/ma-fr"
    }
  ]
}' |
apify call aboo.script/guichet-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,aboo.script/guichet-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/Kx4r6lQbqbu2Lxbzh/builds/UrIKUngZRhiTOqOmr/openapi.json
