

# Comment rechercher des publications X par mot-clé et par date

Vous pouvez collecter des publications publiques sur X pour une période précise avec les paramètres natifs de début et de fin d’un outil d’extraction dédié à la recherche. Un Actor est un programme hébergé de collecte de données. Une Task est un ensemble de paramètres d’entrée enregistrés. L’Actor collecte les lignes de données de la source, tandis que vous réalisez l’analyse des données.

La version publique 0.1.30 de X Search accepte queries (1 à 20), searchMode (latest, top, photos, videos), maxItemsPerQuery (1 à 1000), ainsi que les chaînes de date facultatives startTime et endTime. Remplacez toute la liste enregistrée de 2 requêtes par la seule requête voulue et sa période, avec maxItemsPerQuery réglé sur 2 et searchMode sur latest pour votre premier contrôle de portée limitée. Utilisez les paramètres natifs startTime et endTime une seule fois, sans ajouter de filtres since ou until redondants dans la requête, ni de paramètres inventés expansion, includeReplies ou page.

Les paramètres du test de contrôle actuel utilisent from:OpenAI avec startTime 2026-07-07 et endTime 2026-07-09. Ils ont généré la requête exécutée from:OpenAI since:2026-07-07 until:2026-07-10. Les 2 lignes de réponses du 9 juillet aux positions 2 et 3 comportaient des identifiants d’auteur corrects et des valeurs createdAt correctes en UTC. Le résultat indiquait aussi un total de 1 exclusion outsideTimeRange, sans identifiants exclus. Cela valide la procédure vérifiée, mais ne valide ni tous les opérateurs ni une couverture historique complète.

Les champs natifs utilisés par l’outil comprennent inputQuery, executedQuery, searchMode, resultPosition, postId, postUrl, text, createdAt, authorId, authorHandle, authorUrl, isReply, isQuote, isRepost et observedAt. En sortie, searchMode utilise Latest avec une majuscule, tandis que la valeur d’entrée autorisée est en minuscules. Aucun champ de statut n’est présent dans les lignes du jeu de données.

## Étapes pour effectuer des recherches sur une période délimitée

1. Notez l’expression recherchée et la période voulue avant d’exécuter un script. Gardez une valeur faible pour maxItemsPerQuery et réglez searchMode sur latest pour un contrôle initial.
2. Remplacez la liste de requêtes d’exemple par une seule chaîne de requête, un plafond de 2 éléments et des chaînes de date dans les paramètres natifs startTime et endTime. N’ajoutez pas de termes since ou until redondants dans votre chaîne de requête.
3. Enregistrez les 2 chaînes inputQuery et executedQuery. Par exemple, une demande qui se termine le 9 juillet génère une borne supérieure exclusive au 10 juillet, comme until:2026-07-10.
4. Interprétez les horodatages natifs createdAt et vérifiez qu’ils correspondent à un intervalle UTC défini. Les dates affichées sans heure à l’écran ne définissent pas de fuseau horaire local, sauf si vous les convertissez.
5. Laissez les horodatages manquants marqués comme non résolus au lieu de les deviner. Vous ne pouvez pas utiliser observedAt pour classer une ligne dont le champ createdAt est vide : observedAt indique uniquement l’heure de collecte.
6. Vérifiez les identifiants d’auteur, les noms d’utilisateur et les types de publications, comme les réponses, les citations ou les republications. Une publication d’un auteur peut être une réponse plutôt qu’une publication originale indépendante.
7. Examinez les champs de premier niveau de OUTPUT, comme searchesQueued, searchesStarted, rowsSaved, outsideTimeRange, statusCounts et stopReason, ainsi que le tableau queries qui contient inputQuery, executedQuery, status, rowsSaved, outsideTimeRange et stopReason. Au premier niveau, queries_exhausted signifie que le traitement des recherches en attente est terminé. Cela ne signifie pas que toutes les publications correspondantes de la source ont été parcourues. Pour chaque requête, max_items_per_query signifie que l’échantillon a atteint le plafond de cette requête. Distinguez les résultats en échec, vides et ayant atteint leur plafond. Conservez aussi les écarts entre les positions dans la source, sans reclasser les lignes collectées.
8. Livrez votre registre daté avec les relevés des paramètres d’entrée et le nombre d’exclusions. Ne supposez pas qu’un petit échantillon représente la fréquence totale sur la plateforme ou la popularité historique.

## Exemple fictif original de contrôle des bornes UTC

Le tableau suivant est un petit cas de test fictif original conçu pour vérifier les bornes de date UTC d’un intervalle du 1er au 4 octobre. UTC signifie temps universel coordonné. Un intervalle semi-ouvert inclut son instant de début, mais exclut sa borne supérieure. Selon la convention vérifiée pour les dates sans heure, une période demandée du 1er au 3 octobre inclus correspond à un début le 1er octobre à 00:00 UTC et à une borne supérieure exclusive le 4 octobre à 00:00 UTC. Le paramètre natif demandé endTime au 3 octobre reste distinct du filtre généré until au 4 octobre. Ce cas de test permet au lecteur de vérifier la règle. Il ne contient pas de données réelles issues du test de contrôle de l’Actor.

| Identifiant de la publication | Date de création (UTC) | Date d’observation | Statut par rapport à la période |
| --- | --- | --- | --- |
| CandidateP1 | 2026-10-01 00:00:00 | 2026-10-01 01:00:00 | Dans la période |
| CandidateP2 | 2026-10-03 23:59:59 | 2026-10-04 00:00:00 | Dans la période |
| CandidateP3 | 2026-10-04 00:00:00 | 2026-10-04 01:00:00 | Hors période |
| CandidateP4 | null | 2026-10-03 12:00:00 | Non résolu |

Ce cas de test présente 2 lignes dans la période, 1 ligne hors période et 1 ligne au statut non résolu dont la date de création vaut null. Un échantillon collecté peut ne pas contenir certaines publications plus anciennes. Une publication manquante signifie donc qu’elle n’a pas été observée dans l’échantillon, et non qu’elle est absente de X.

## Prochaine étape

Vérifiez un horodatage createdAt renvoyé par rapport à votre requête exécutée enregistrée. Indiquez s’il se trouve dans la période, hors période ou si son statut est inconnu avant d’élargir votre échantillon daté. Pour lancer votre recherche, utilisez [X Search Scraper Actor](https://apify.com/chronometrica/x-search-scraper) et [X and Twitter Search API Dataset Task](https://apify.com/chronometrica/x-search-scraper/examples/x-twitter-search-api-dataset).

## Sources et lectures complémentaires

- [Discussion Reddit sur l’extraction de données Web](https://www.reddit.com/r/webscraping/comments/19bekjv/is_there_a_current_solution_to_scrap_tweets/)