MarketCheck's platform captures and tracks the complete lifecycle of each vehicle listing, from its initial discovery on a dealer's website to its eventual expiration. This guide explains the daily process and the key date fields that manage a listing's status in our system.
Our daily crawl engine continuously monitors dealer websites to manage the lifecycle of each inventory listing. This process ensures that the data in our API and feeds accurately reflects the current vehicles available from dealers.
When our crawler finds a new vehicle on a dealer website, it creates a new listing in the MarketCheck database. This listing represents the vehicle's presence at that dealer and serves as the starting point for its lifecycle.
On subsequent daily crawls, if the same listing is found with unchanged price and mileage, we update its status_date
to the current timestamp. The scraped_at
and first_scraped_at
dates, which mark discovery milestones, follow specific update rules. This daily "heartbeat" confirms the listing is still active.
The lifecycle ends when a listing is either removed from the dealer's website or its key attributes change.
status_date
. Because our API and data feeds only expose listings updated within recent periods, the expired listing is automatically removed from active results.You can track a listing's lifecycle using four distinct date fields that MarketCheck manages during the crawling process. Each field serves a specific purpose in tracking different aspects of a vehicle's presence in the market.
These fields are populated by our crawling system to track a listing's status and changes over time.
first_scraped_at
first_seen_at_mc
scraped_at
scraped_at
datefirst_seen_at
status_date
last_seen_at
relisted_at_date
scraped_at
.scraped_at
will change to reflect the new listing date, but relisted_at_date
remains unchangedfirst_seen_at_source
*_at
) and ISO-8601 format (*_at_date
) in API responses.Understanding how listings transition between states helps you interpret the date fields and predict listing behavior.
A new listing is created when:
scraped_at
and status_date
, while first_scraped_at
and relisted_at_date
remain from previous listing)scraped_at
and status_date
, while first_scraped_at
and relisted_at_date
remain unchanged)For listings with no attribute changes:
status_date
is updated daily to reflect continued presencescraped_at
, first_scraped_at
, and relisted_at_date
remain unchangedWhen a VIN reappears after extended absence:
scraped_at
and status_date
are updated; relisted_at_date
remains unchangedrelisted_at_date
resets to match the new scraped_at
date; first_scraped_at
always remains the original discovery daterelisted_at_date
will reset to April 5th, treating it as a fresh start on that dealer's website.These edge cases demonstrate how the system handles complex situations that can occur in real-world dealer operations.
When a vehicle moves to a new dealer, a new listing is created for the new dealer's website. The first_scraped_at
value for that VIN remains unchanged, preserving the vehicle's initial discovery date across all dealer transfers. The relisted_at_date
reflects when the VIN first appeared on the new dealer's website.
When multiple updates are received for the same VIN on the same day, the system uses the latest status_date
timestamp to resolve conflicts and maintain data consistency.
Consider a VIN first discovered in 2020 that reappears after 5 years:
first_scraped_at
remains the original 2020 discovery daterelisted_at_date
, scraped_at
, and status_date
all reset to the 2025 reappearance datefirst_scraped_at
and relisted_at_date
remain unchanged, while scraped_at
and status_date
update to reflect the new listingThis example illustrates the various stages a vehicle listing goes through, highlighting the key date fields and their changes over time.
For brevity, only the relevant date fields are shown in each stage in human-readable format.
A new car (VIN 1GHDT13W8V2711434) is seen for the first time. A new listing is created:
{
"id": "1GHDT13W8V2711434-bab1-73540ae7798c",
"vin": "1GHDT13W8V2711434",
"first_scraped_at": "2019-02-03",
"scraped_at": "2019-02-03",
"status_date": "2019-02-03",
"relisted_at_date": "2019-02-03",
"price": 22000,
"miles": 30000,
"seller_name": "Langdale Ford Valdosta"
}
The car is seen with the same price. Only status_date is updated:
{
"id": "1GHDT13W8V2711434-bab1-73540ae7798c",
"vin": "1GHDT13W8V2711434",
"first_scraped_at": "2019-02-03",
"scraped_at": "2019-02-03",
"status_date": "2019-02-05", <---- Only this is updated
"relisted_at_date": "2019-02-03",
"price": 22000,
"miles": 30000,
"seller_name": "Langdale Ford Valdosta"
}
Price drops, a new listing is created:
{
"id": "1GHDT13W8V2711434-sft7-87456aerrt36", <---- New ID for new listing
"vin": "1GHDT13W8V2711434",
"first_scraped_at": "2019-02-03",
"scraped_at": "2019-02-06", <---- New scraped_at date
"status_date": "2019-02-06", <---- New status_date
"relisted_at_date": "2019-02-03",
"price": 20000,
"miles": 30000,
"seller_name": "Langdale Ford Valdosta"
}
The previous listing id 1GHDT13W8V2711434-bab1-73540ae7798c
is now inactive, and stops getting updates, but it still exists in the database for historical reference.
The car is seen with the same price. Only status_date is updated:
{
"id": "1GHDT13W8V2711434-sft7-87456aerrt36",
"vin": "1GHDT13W8V2711434",
"first_scraped_at": "2019-02-03",
"scraped_at": "2019-02-06",
"status_date": "2019-02-09", <---- Only this is updated
"relisted_at_date": "2019-02-03",
"price": 20000,
"miles": 30000,
"seller_name": "Langdale Ford Valdosta"
}
Car had gone offline on day 8 and reappeared on day 21, maybe due to reconditioning, repairs, or other factors. A new listing is created:
{
"id": "1GHDT13W8V2711434-b59d-70af266a9eda", <---- New ID for new listing
"vin": "1GHDT13W8V2711434",
"first_scraped_at": "2019-02-03",
"scraped_at": "2019-02-23", <---- New scraped_at date
"status_date": "2019-02-23", <---- New status_date
"relisted_at_date": "2019-02-03",
"price": 20000,
"miles": 30000,
"seller_name": "Langdale Ford Valdosta"
}
Car has come back onto market after more than 6 years at different dealerships, a new listing is created:
{
"id": "1GHDT13W8V2711434-re45-jh54add49ytr", <---- New ID for new listing
"vin": "1GHDT13W8V2711434",
"first_scraped_at": "2019-02-03", <---- Original first_scraped_at date
"scraped_at": "2025-08-13", <---- New scraped_at date
"status_date": "2025-08-13", <---- New status_date
"relisted_at_date": "2025-08-13", <---- New relisted_at_date
"price": 7000,
"miles": 90000,
"seller_name": "Group 5 Automotive"
}
Understanding how to use these date fields helps you make informed decisions when analyzing inventory data and tracking vehicle availability.
status_date
(alias: last_seen_at
) to determine when a vehicle was last active at a specific price and identify the most recent activityscraped_at
(alias: first_seen_at
) to track when the current listing iteration began, whether from new discovery, attribute changes, or reappearance after absencefirst_scraped_at
(alias: first_seen_at_mc
) to identify when a VIN first appeared in the MarketCheck system, regardless of dealer changes or gaps in availabilityrelisted_at_date
(alias: first_seen_at_source
) to understand when a VIN first appeared on a specific dealer's website, which resets only after 30+ day absences