I checked it out and I filed a bug report for the Catalog API /v2/search:
Use /v1/search/items/details/ instead of /v2/search/items/details/ to search for gears:
https://catalog.roblox.com/v1/search/items/details?Category=11&Subcategory=5&CreatorTargetId=1&SortType=0&SortAggregation=5&Limit=120
However, this endpoint does not return the upload date of the gear. This would make it difficult to impossible to set an accurate time when the gear was uploaded into the spreadsheet.
Response Body example:
{
"data": [
{
"id": 10468797,
"itemType": "Asset",
"assetType": 19,
"name": "Ban Hammer",
"description": "For those favored by Telamon. Perfect for when you just have to drop the hammer on someone.",
"productId": 1791401,
"genres": [
"All"
],
"itemStatus": [],
"itemRestrictions": [],
"creatorHasVerifiedBadge": true,
"creatorType": "User",
"creatorTargetId": 1,
"creatorName": "Roblox",
"priceStatus": "Off Sale",
"favoriteCount": 90447,
"offSaleDeadline": null,
"saleLocationType": "NotApplicable",
"isOffSale": true
}
]
}
Once you have the IDs, you are looking for the Economy API to get the gears’ upload date.
But for one reason or another, its documentation was removed on June 3rd 2021: https://twitter.com/jmkdev/status/1400576897503870979
https://economy.roblox.com/docs/index.html?urls.primaryName=Economy%20Api%20v1
But here is an undocumented endpoint you can use, which returns the upload date:
https://economy.roblox.com/v2/assets/{ASSETID}/details
Example search:
https://economy.roblox.com/v2/assets/10468797/details
Response Body Example:
{
"TargetId": 10468797,
"ProductType": "User Product",
"AssetId": 10468797,
"ProductId": 1791401,
"Name": "Ban Hammer",
"Description": "For those favored by Telamon. Perfect for when you just have to drop the hammer on someone.",
"AssetTypeId": 19,
"Creator": {
"Id": 1,
"Name": "Roblox",
"CreatorType": "User",
"CreatorTargetId": 1,
"HasVerifiedBadge": true
},
"IconImageAssetId": 0,
"Created": "2009-05-05T18:20:26.557Z",
"Updated": "2018-03-31T04:22:49.517Z",
"PriceInRobux": null,
"PriceInTickets": null,
"Sales": 0,
"IsNew": false,
"IsForSale": false,
"IsPublicDomain": false,
"IsLimited": false,
"IsLimitedUnique": false,
"Remaining": null,
"MinimumMembershipLevel": 0,
"ContentRatingTypeId": 0,
"SaleAvailabilityLocations": null,
"SaleLocation": null,
"CollectibleItemId": null,
"CollectibleProductId": null,
"CollectiblesItemDetails": null
}
Afaik, there is no batch request for item details from the Economy API. You’ll need to ping every assetId once to get upload date.
The method and examples above apply only if you don’t trust the Roblox Wikia as a source of truth, and you want to do this yourself. I recommend this route for data accuracy.
If you have faith that the Roblox Wikia got everything correct, you’ll want to use the MediaWiki API and search using api.php?
You’ll want to parse through the categories to get the “pageids” of the roblox assets using gcmTitle to search the category:
https://roblox.fandom.com/api.php?action=query&generator=categorymembers&gcmtitle=Category:Accessories_first_available_by_year
You then search for the returned pageid from “pages” to find which year using gcmpageid:
https://roblox.fandom.com/api.php?action=query&generator=categorymembers&gcmpageid=
and finally parse the returned “pages” of the gcmpageid for the “external links” to find the Roblox Catalog link:
https://roblox.fandom.com/api.php?action=parse&pageid=
Since it is community contributions to the Roblox Wikia, I am sure you will run into several edge cases where you could run into several external links or duplicate links. You’ll need to figure those out yourself.
Then you just have to compile your data, and make sure to filter every category by year and plug it into the spreadsheet.
Best of luck.
but seriously, why do you want to do this?
If you go ahead and do this and create a good data Google Spreadsheet that is accessible for everyone in the community, then that’s an awesome resource.
But I fail to see why this is necessary for your own game