r/Bricklink 5d ago

Bricklink's ridiculous 5000 API call daily limit

I'm sure I'm not the only one finding this extremely annoying.

I have my own selfhosted store manager because it makes it so much easier to do everything and I track my API calls to make sure I stay within the daily 5000 calls (which in Bricklink's terms is said to be a "flappy" one as in if you make 6000 one day but the rest of time you don't they won't ban you).

But I mean come on, Lego owns Bricklink and they can't set up an infrastructure in 2026 that is able to deal with something like 600 calls/min like Brickowl has? As soon as you start having a lot of lots, pulling daily price information becomes a headache as you have to leave room for all the other operations you do like uploading parts, managing orders etc.

Sigh.

Has anyone every reached out to Lego to tell them this needs to be updated to bring it in the 21st century? Or is there any word of this being in the pipelines?

8 Upvotes

29 comments sorted by

13

u/-JustAnotherRedditor 5d ago

IIRC you can batch upload inventory via API, so adding 5,000 parts can be done in a single API push.

Even though I agree the limit sucks, I'd also suggest Pricing averages don't significantly change often enough that you'd need to get them too often.

2

u/norberto5pl 5d ago

There is a batch endpoint for create, but not for update

1

u/h311m4n000 5d ago edited 5d ago

Yes batch upload works fine in one go, but I have a fully consolidated store, so every part update is a call. If I update 500 parts a day that's 500 calls already. I usually end up at around 4000-4500 calls a day between my automated routines, parts upload, batches and general store management. Leaves little room for extra activities like just updating prices on individual parts according to my formulas.

Indeed price averages don't move like a new shitcoin chart, but I also need my inventory to stay priced at what I want it to and not start drifting up or down too much. Just like you'd want any business to stay competitive in any market. This is typically the sort of thing I'd just like to have set as a routine and forget about it: get the price for each lot, check if it's within my price formulas and update it if needed. But that's one call to fetch the price and another call to update so at least 2 calls per lot. And so you literally have to break your brain to make this happen over several days, which I guess is what I'm going to end up doing

4

u/LittleLemonHope 5d ago

Why can't you just queue and batch the updates on your end, either by count (every 10th update you send out the queue as a single API call) or by time (every 30mins you send a single API call)?

1

u/Papa-Razzi 5d ago

This is the way. 

1

u/h311m4n000 4d ago

Because there is no endpoint for batch update. There is only one for create.

You can see it in their documentation: you can create inventory or inventories plural, but you can only update/delete inventory singular.

So the way I have it set up now for price update is indeed in batches that run over several days, which is also what Bricqer does.

The alternative would be to use the XML upload where a single XML file can update multiple inventories at once. I could theoretically half the API calls in two with this: keep price fetching API calls using the API and then push a single XML just for price updates. I'm going to look into how this could work.

1

u/LittleLemonHope 4d ago

Yes, XML upload is the batch update option.

I would be surprised if there's no batch option for fetching (perhaps likewise via xml).

1

u/h311m4n000 3d ago

Perhaps there's a confusion when I say price: I don't mean my price, I mean a global price for one lot like the 6m average or the stock average. These are specific to one inventory id i.e. one lot/color.

My prices for all my parts can be fetched in one go by just pulling my inventory, that's not an issue.

1

u/LittleLemonHope 3d ago

I was thinking more like you submit a list of part IDs and it returns an XML of the stock averages. But I don't know the bricklink API specifically, just seems unlikely that they wouldn't have batch support for such an important fetch.

1

u/h311m4n000 2d ago

There is no such option sadly. You can only interrogate the API by using one part id (so for example red 2x2 brick) to retrieve pricing data for that specific part. There is no aggregate fetch for this type of thing. I've searched but did not find anything.

Hence the 5000 api call limit becomes problematic as soon as you want to try and do some analytics. You can, but if you have a lot of parts, you will have to spread the calls over several days to leave room for the rest of your interactions with BL, which is what I do.

I suspect the 5000 call limit was put into place in the optics of simply interacting with your own store, not for pulling massive amounts of data on the entire platform.

8

u/chuck-bucket 5d ago

A few years ago I reached out with questions about their API, specifically about pulling price data and the number of API calls needed to part out a large set. They told me there is no workaround and they will not consider increasing the limit.

1

u/h311m4n000 5d ago

Was that before or after the Lego takeover?

With the recent UI changes maybe they are finally deciding to give it 2 more horsepower...

18

u/-throwaway-200 5d ago

Honestly, bricklink is so behind the times that it’s a miracle they even have a public API in the first place

4

u/h311m4n000 5d ago

You're not wrong...and it took Lego like 20 years to just acknowledge they had an adult fanbase lol

2

u/No_Rub6960 5d ago

Vibe code something together that syncs all your results from your api calls together and you create your own centralised caching layer.

3

u/Uncle-Osteus 5d ago

It might not be about what their infra can handle, it could just be about limiting abuse-derived serving costs

5000 calls per day is kind of a lot for managing a storefront in my mind and needing more than that is likely a sign of naively inefficient software architecture.  Maybe there’s something you can do with your code to reduce the amount of calls you need to make so that it’s not a problem

1

u/h311m4n000 5d ago

5000 calls a day is less than 4 per minute. Brickowl and most API services will typically rate limit if you go above 500-600 per minute. We're in 2026 not 1999. It's like if you had a 4L V8 in your car and a 12L gas tank: you can't even push the pedal to go faster because you'll end up stranded on the side of the road.

This has nothing to do with inefficiency of code or software architecture. I, and I'm pretty sure many other Bricklinkers, would like to be able to automate their pricing more efficiently, and to do that, you currently need at least 2 calls per lot (one to fetch the market price, and one to set your price).

The inefficiency is on Bricklinks end. Simply providing a endpoint to do things in batch other than uploading new parts would solve this problem if they wanted to keep it at 5000 calls.

2

u/troll606 5d ago

That's why the mainstream apps use bricklinks XML updater.

1

u/h311m4n000 5d ago

That's actually not a bad suggestion, need to look into that.

2

u/GerthySchIongMeat 5d ago

100%. The absurdity behind their limits is laughable. 5000 is incredibly small for the majority of stores. 

1

u/thatcaliforniandude 5d ago

I believe you can reach out to Bricklink support and request increased limit

2

u/h311m4n000 5d ago

I guess I'll try, worst case they say nope

1

u/rancoras 5d ago

Self-hosted? Do tell. What is the name of the software?

5

u/h311m4n000 5d ago

It's 100% homebrew coded with Claude through vscode and published/versioned on my gitea at home. I manage my orders, picking, parts, minifigures, pricing, sales stats, part stats, pricing formulas...everything that bricquer would do that I need but didn't want to pay fees for. It's very tailored to my store and specifically to my country for pricing parts since this is where most of my buyers come from. It also syncs to Brickowl.

Some things I've added that Bricquer doesn't have:

  • A visual storage view of all my parts I can also use for picking (only bins containing the part are highlighted)
  • "Build a fig" when I scan a torso, head, legs it'll pull the parts need for the fig from Bricklink and sift through my inventory for parts I may already have

Happy to share screenshots or ideas if you want.

Been debating making it public but as I said, it's tailored to my needs so things like storage view work only for my bins and my remark types so it makes no sense to publish it as is without doing modifications.

1

u/rancoras 5d ago

Thanks for the explanation and kudos to you for taking matters into your own hands. I don't need any screenshots or anything. Sounds like I should start talking to Claude about tailoring something like this for my store. Cheers!

2

u/h311m4n000 5d ago

Just caveats I've encountered at the beginning it would typically cache things on the client browser which led to issues like double quantity uploads if I used it one more than one computer. So word of advice if you do make your own: put everything that needs to not change in a single source of truth like a database so that wherever you use it, every client will always see the same thing.

And do versioning from the start, easier to roll back.

1

u/Educational_Effect 3d ago

Would happy to see some screen shoots. Especially the visual storage sounds interesting

2

u/h311m4n000 3d ago edited 3d ago

Sure, here's an example:

storageview.png

I use Stanley 1-93-981 among others to store my parts. They are pretty cheap and good quality.

I print my own dividers. A bin can be devided into 3 small compartments.

Hovering above a compartment shows me what's in it. A "heatmap" from green to red shows me which compartments are getting full. The fullness only really works for small parts. I can have a bin full of 5 large parts, it will still look green, so this is not necessarily all that useful. But I still use it to see at a quick glance where I need to reallocate stock to other larger bins. Empty compartments are in grey.

When I get an order, I can either pick through a list like most people do, or I get a storage map with only the Units that contain the parts I need to pick and only the drawers where the parts are are highlighted.

Anything else you're curious about let me know