Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Request: Show an average for the last few "sold" prices on eBay #5

Open
Joshfindit opened this issue Jul 13, 2020 · 17 comments
Open

Request: Show an average for the last few "sold" prices on eBay #5

Joshfindit opened this issue Jul 13, 2020 · 17 comments

Comments

@Joshfindit
Copy link

Why average: Because sometimes a single sale is an outlier (way too high or way too low)
Why sold price: represents what people are actually paying right now

API reference: https://developer.ebay.com/DevZone/finding/CallRef/findCompletedItems.html

@RollingStar
Copy link

To be clear: no price data is included currently, but you think it should be added?

I agree with Joshfindit. bucherfa, if I made a PR for this, would you add it? Specifically I would do a median of the last 5 or 10 items. It would require an eBay API key but they look trivial to get.

@nobodywasishere
Copy link

You have to have a way of filtering out sales that include multiple devices (like 3 galaxy s5's). Instead of taking a straight average, what if you took the average of the IQR, so if you have 12 prices, drop the highest 3 and lowest 3, then take the average of the middle 6? Or get the average for all sales minus the outliers (which there is a specific definition for outliers actually). Showing a range instead of a single value? Just throwing out ideas.

The thing you may also run into trouble with is devices that just aren't available on ebay anymore, either just because they're too old or weren't that popular. Setting a minimum of 3 sales may filter out these devices.

Will you be able to show prices from different countries? People from all over the world use device finders like this.

@RollingStar
Copy link

I think this will be reasonably easy to make decent and almost impossible to make perfect. You're talking about edge cases and specificity that I think is overkill.

@Joshfindit
Copy link
Author

To be clear: no price data is included currently, but you think it should be added?

Correct, yes. I’m assuming many users take the path I did:

  • Find a few different currently-supported phones that work with Lineage
  • Check prices and availability for each
  • Throw out any options that are outside of budget or not available
  • Buy what’s left for the most reasonable price

Having prices on the list eliminates most of that work

@bucherfa
Copy link
Owner

bucherfa commented Aug 16, 2020 via email

@RollingStar
Copy link

Would a proof of concept price algorithm (+ API code) in Python be useful at all?

My hesitation with this come from some problems that I haven't found a solution for yet. Problems being: what countries to do the pricing for, how to get accurate pricing, how to make sure the user knows that he have to verify the exact device model version and if the device pricing matching data has to be adjusted frequently.

My opinion continues to be that this is unwinnable. Median of last 10 devices sold on eBay would probably get 80% of the value of something 10x as hard to implement.

@Joshfindit
Copy link
Author

As far as I’m concerned, even if the margin for error is +-$100, it’s still helpful.

Even with a perfect implementation, you can’t be guaranteed to get a device for that price and I think users will understand that implicitly (and will explicitly understand it with a very simple disclaimer that these are ebay sales).

@nobodywasishere
Copy link

Would this be a problem? Per the eBay documentation:

Be aware that it is possible to use this call in such a way as to violate the terms and conditions of your API License Agreement. Ensure that you do not store the results retrieved from this call or use the results for market research purposes.

@bucherfa
Copy link
Owner

Ensure that you do not store the results retrieved from this call or use the results for market research purposes.

mh... that actually sounds exactly what is going to be done here :/

@nobodywasishere
Copy link

nobodywasishere commented Aug 24, 2020

Found the actual license just to clarify.
https://developer.ebay.com/products/license

8.1.d Prohibited Use and Derivation of Information. 
    1. You must have eBay’s express prior written permission to use, or display eBay Content in any way that enables derivation of, any of the following: 
        D. Average selling price or gross merchandise sold for any eBay category. 

@Joshfindit
Copy link
Author

I do indeed concur that the license prohibits exactly what I was suggesting 😓.

I apologize for suggesting that the project engage in unlawful activities. Thank you @nobodywasishere. Good catch.

Does anyone know of another API that could be used?

@nobodywasishere
Copy link

It's not necessarily unlawful, just violates their ToS; the worst that could happen is they revoke access to their API.

Per the language there, it does mean they may let us if we ask and tell them our intentions. If I'd guess, that clause is there to prevent people from making pricing history charts for the purpose of buying/selling at certain times, trying to game eBay's system.

Other options could include getting the pricing manually from eBay (which would suck - please don't do this) or parsing the price from the website via HTML directly (curl the page and grep for each price - would be a pain and not work as well).

Another option could be parsing the html but from this website, and just grepping for <h2 id="price_fair" style="display: block;">. Their pricing seems pretty spot on to me. I could add the links for each device to my spreadsheet as well to speed up the process, as it appears the links aren't standardized. Though, for a more official way to access their data, we could email them for a data inquiry instead (it's listed on their contact page).

Apologies for ruining plausible deniability regarding the eBay API.

@RollingStar
Copy link

D. Average selling price or gross merchandise sold for any eBay category.

To me this just sounds like average selling price for an eBay category - i.e., mobile phones, not a Galaxy S5.

Also, I'm not interested in doing averages, I'm doing medians.

@Joshfindit
Copy link
Author

D. Average selling price or gross merchandise sold for any eBay category.

To me this just sounds like average selling price for an eBay category - i.e., mobile phones, not a Galaxy S5.

Fair point, but this one is also at issue: “or use the results for market research purposes.”

@RollingStar
Copy link

RollingStar commented Aug 25, 2020

Good point, but I don't think that's what this is either. We're not trying to launch an Android phone and look at typical sale prices. Nor are we launching a phone marketplace and trying to determine the eBay sales volume. If you just take the literal words "market" "research" then there's no reason for eBay to offer an API at all; anything would be covered.

https://en.wikipedia.org/wiki/Market_research

@nobodywasishere
Copy link

I think it'd be fine to go ahead with the eBay API as it's not technically outlined in their ToS. eBay serves 150-250 million API calls/hour as it is so I don't think 150 every month is going to put any kind of stress on their system. I'd also hope they'd understand what we're doing is different from what I believe the intent behind those rules are.

As a fallback though I would recommend using/contacting movaluate to see if they'd help, as they seem to have already done all the work for determining the prices for these phones for a specific quality, which may even prove a better result.

@nobodywasishere
Copy link

Actually, movaluate may not be the best as they only have about 1/3 of the devices that LineageOS supports. I did go through and pull all the prices they did have listed though; going to include these in my spreadsheet.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants