Market Prices and History for Citadels from ESI what's the current status?

Last I looked into getting market prices from citadels, this was only possible from public / freeport markets. To do this, you would need to get the list of public structures, then go through each one and query the market prices to see if it returned anything because there was no parameter to see if the structure had a market service installed, which I found really inefficient.

The second issue is that if the structure had one person on no-dock, then the structure wouldn’t be public.

The third issue is that if the market was limited to your alliance, say Goonswarm only, I couldn’t download from that hub unless the user had the structure ID (very unlikely) and if the corporation they are in doesn’t own the structure, then I wouldn’t be able to get the ID.

So, if I’m correct, it seems the only thing I can do is load up all the public structures, see if they return market orders, then if they do, store that data and populate it normally. If the user is in a trade system only allowed for blues, then they won’t see anything like they could before with outposts.

This doesn’t seem like a very good system. Maybe I’m the only one trying to pull this type of market data but shouldn’t users that can see and buy from a market citadel be able to download that information easily even if it requires auth?

Any talk to the change in this system? Is there something I’m completely missing here? I’d appreciate any help as I’m getting several requests to add price downloads from citadel markets to IPH.


  1. That’s not true. You can get market orders from any structure you have market access to using Do note it is an authenticated endpoint however. But yes, the only way to know if that structure has orders is to look it up.
  2. That’s correct.
  3. You can get the structure ID by linking the structure, putting it into chat, then right click copy, then paste that into notepad or chrome omnibar. The big long number is the structure_id.

It should also be noted that when using the region orders endpoint, that will only return ranged buy orders from structures. It doesn’t include sell orders.

But no, it’s working as intended. You shouldnt be able to see the orders in a structure you don’t have access to. The amount of requests just comes with the territory of what you are doing.

Hey, thanks for the reply and I need to clarify a bit.

On #1 I’m trying to do this without the user having to do anything on their end. Is there a way to determine what structures the user has access to through auth? I can’t seem to find anything that will work.

#3, this seems tedious to do for an app user.

I agree that it’s working as intended to make sure you can’t see prices of markets you don’t have access to, I’m fine with that. What I really want to do here is allow a user to authorize my program to look up prices for markets they have access to. If you are say a new pilot that goes out to Cobalt Edge, I’d like them to be able to open up IPH and have all their access update with the auth refresh I do. Then they would be able to download prices for CE region because I know they have access to those structures with market orders. Since it’s all done through auth, why would this be an issue?

I’m confused about your last point about the region orders endpoint. What one? I use [/markets/{region_id}/orders/] and [/markets/{region_id}/history/] now without issue. So you are saying that I get ranged buy orders in my data now if I’m using it? I’d like to use [/markets/structures/{structure_id}/] for my scenario above.

  1. Make the request and see if you get a 401 back.

  2. Only other way to do it would be like search each sys in a given region using the the search endpoint. But that is a silppery slope based on There is/was talk about ACL related endpoints that would help alleviate this issue, but will have to wait for more details on that. Is the endpoint i was talking about with the ranged orders.

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.